System and method for providing dynamic elasticity of contact center resources

ABSTRACT

A system and method for dynamically scaling up or down, resources of a contact center tenant, based on detected or predicted demands on the contact center tenant. A processor monitors and collects contact center operation data. The processor detects, in response to the monitoring, a condition relating to the operation of the contact center. The processor dynamically adjusts at least one hardware or software resource for the contact center based on the detected condition. Health of a particular deployment may also be monitored to learn over time which deployments are healthy for which conditions. If a current deployment is deemed to be unhealthy, the processor may take action to move the contact center to a healthy state.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No.61/700,306, filed on Sep. 12, 2012 (attorney docket 70393), and U.S.Provisional Application No. 61/702,168, filed Sep. 17, 2012 (attorneydocket 70438), the content of all of which are incorporated herein byreference.

This application is also related to U.S. application Ser. No. 13/753,443entitled “System and Method for Dynamic Configuration of Contact Centersvia Templates,” filed on Jan. 29, 2013 (attorney docket G711:72301), thecontent of which is incorporated herein by reference. This applicationis also related to U.S. application entitled “System and Method forMonitoring Health of Deployment States for a Contact Center” (attorneydocket G711:73646) filed on even date herewith, the content of which isincorporated herein by reference.

BACKGROUND

It is desirable to aid companies to deploy their contact centeroperations as efficiently and successfully as possible. However, one ofthe items that may take time to implement for a new contact center isthe business logic employed for routing calls. Traditionally, a contactcenter's routing strategy is coded for the contact center based on theparticular contact center's needs. The software is then debugged anddeployed at the contact center's premises after months and months ofcoding, debugging, and testing by skilled programmers. Any change inthis routing strategy requires reprogramming and re-deployment of thesource code, adding further delays in the deployment of contact centeroperations.

Before any programming of the routing strategy can be done, the contactcenter must generally identify what the best practices are for thisparticular type of contact center, what types of services are to beprovided, what are the needs of the contact center, and the businesslogic that will work best for the contact center. The identification ofthe business logic itself, aside from its programming, may be a dauntingtask to entities that are not familiar with call centers and theirsetup. Much research may be needed before identifying the business logicthat will be used, adding further delays to a successful deployment of acontact center.

In addition, contact centers are generally setup based on the serviceoffering(s) and predicted traffic volume for the contact center that isoften decided in advance. Based on this determination, the physical andlogical architecture of the contact center is defined and put intoplace. When conditions for the contact center change, the process isoften repeated and service is migrated to the new system.

Accordingly, what is desired is a system and method for deployingcontact centers efficiently without requiring skilled technicians orcustomized coding of routing strategies that are difficult to generate,deploy, and modify.

Additionally, once a contact center is deployed, it may be useful tomonitor operation of the contact center to dynamically adjust contactcenter resources to meet actual or predicted changes in demand for thoseresources. It may also be desirable to measure or predict health of thecontact center if adjustments are made to the contact center resources.Such health information may be useful in making future adjustments for acurrent contact center tenant or other similarly situated tenants in amulti-tenant environment.

SUMMARY

Embodiments of the present invention are directed to a method forproviding dynamic elasticity of contact center resources. The methodincludes monitoring and collecting, by a processor, contact centeroperation data. The processor detects, in response to the monitoring, acondition relating to the operation of the contact center. The processordynamically adjusts at least one hardware or software resource for thecontact center based on the detected condition.

According to one embodiment, the monitoring includes monitoring volumeof interactions handled by the contact center, wherein the condition isan increased number of interactions when compared to a threshold volume.

According to one embodiment, the monitoring includes monitoring hardwareresources of the contact center, wherein the condition is an increasedload on the hardware resources when compared to a threshold load.

According to one embodiment, the dynamic adjusting adds or removes aninstance of the software resource, moves the software resource from afirst computing device to a second computing device, and/or moves fromproviding a first mix of contact center services, to a second mix ofcontact center services. The second mix of contact center services mayinclude a contact center service not in the first mix.

According to one embodiment, the processor selects an adjustmentstrategy from a plurality of possible adjustment strategies in responseto detecting the condition, and the dynamic adjusting is based on theselected adjustment strategy. The adjustment strategy may be forgenerating a particular deployment state having the adjusted at leastone hardware or software resource.

According to one embodiment, the deployment state is selected from anarchive of different deployment states. The selected deployment statemay be identified as a healthy state.

According to one embodiment, the dynamically adjusting includesretrieving by the processor from an archive, recorded steps forperforming the dynamic adjusting; and executing by the processor theretrieved recorded steps.

According to one embodiment, the dynamic adjusting includes taking bythe processor the at least one hardware or software resource allocatedto a second contact center and reallocating the resource to the contactcenter.

According to one embodiment, the contact center operation data includeshistorical data.

According to one embodiment, the detecting the condition includes makinga prediction relating to the operation of the contact center.

Embodiments of the present invention are also directed to a system forproviding dynamic elasticity of contact center resources. The systemincludes a processor and a memory. The memory stores programinstructions thereon that, when executed by the processor cause theprocessor to: monitor and collect contact center operation data; detect,in response to the monitoring, a condition relating to the operation ofthe contact center; and dynamically adjust at least one hardware orsoftware resource for the contact center based on the detectedcondition.

A person of skill in the art should understand the embodiments of thepresent invention allow contact center resources for a particularcontact center tenant to be scaled up or down as needed based ondetected or predicted demands on the contact center tenant. Thus, thetenant need to pre-allocate resources that may not even be used for aperiod of time. Health of a particular deployment may also be monitoredto learn over time which deployments are healthy and for whichconditions. If a current deployment is deemed to be unhealthy, theprocessor may take action to move the contact center to a healthy state.By knowing which deployment states are healthy or unhealthy, theprocessor may be able to avoid adjustment of resources that may take thecontact center into an unhealthy state. Instead, the processor mayselect an adjustment that migrates the contact center to the closestknown healthy state, as opposed to an untested state that may prove tobe unhealthy.

These and other features, aspects and advantages of the presentinvention will be more fully understood when considered with respect tothe following detailed description, appended claims, and accompanyingdrawings. Of course, the actual scope of the invention is defined by theappended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic block diagram of a system for dynamicconfiguration, reconfiguration, and monitoring of contact centersaccording to one embodiment of the invention;

FIG. 2 is a more detailed schematic block diagram of portions of thesystem of FIG. 1 according to one embodiment of the invention;

FIG. 3 is a screen shot of a UI page for guiding a contact center workerin configuring a contact center according to one embodiment of theinvention;

FIG. 4 is a screen shot of a UI page rendered upon selection of arouting configuration option according to one embodiment of theinvention;

FIG. 5 is a screen shot of a UI page for selecting a routing templatefor a particular routing strategy identified in FIG. 4 according to oneembodiment of the invention;

FIG. 6 is a screen shot of a UI page rendered in response to selectionof a particular routing template in the UI page of FIG. 5 according toone embodiment of the present invention;

FIG. 7 is a screen shot of a UI page rendered upon selection of awelcome block in the UI page of FIG. 6 according to one embodiment ofthe invention;

FIG. 8 is a screen shot of a UI page rendered upon selection of amessage selection function in the UI page of FIG. 7 according to oneembodiment of the invention;

FIG. 9 is a screen shot of a UI page rendered upon selection of an hoursblock according to one embodiment of the invention;

FIG. 10 is a screen shot of a UI page rendered upon selection of a menublock for configuration, according to one embodiment of the invention;

FIG. 11 is a screen shot of a UI page rendered upon selection of a routeto agent block according to one embodiment of the invention;

FIGS. 12-15 are screen shots of a UI page rendered by a specializedapplication for composing a routing strategy according to one embodimentof the invention;

FIG. 16 is a screen shot of a UI page rendered when a preview button isselected according to an embodiment of the invention;

FIG. 17 is a screen shot of a UI page rendered upon selection of a “Seeall versions” link according to one embodiment of the invention;

FIG. 18 is a screenshot of an exemplary dashboard UI according to oneembodiment of the invention;

FIG. 19 is a screen shot of a UI page rendered as the home dashboardaccording to one embodiment of the invention;

FIG. 20 is a screen shot of a UI page rendered by a specializedapplication when a user selects a routing window for more detailedinformation according to an embodiment of the invention;

FIG. 21 is a screen shot of an exemplary UI page rendered when a contactcenter has multiple lines and multiple routing strategies according toone embodiment of the invention;

FIGS. 22-30 are screen shots of various example graphical user interfacescreens rendered by a specialized application running on a third partyweb platform according to one embodiment of the invention;

FIG. 31 is a signaling flow diagram illustrating a processing sequencefor configuring a routing logic for a contact center, and for routing aninbound call based on the configured routing logic according to oneembodiment of the invention;

FIG. 32 is a block diagram of various virtual machine instances runningon hardware infrastructure provided on a remote computing environmentaccording to one embodiment of the invention;

FIG. 33 is a flow diagram of a process for providing dynamic elasticityof contact center resources according to one embodiment of theinvention; and

FIG. 34 is a flow diagram of a process for monitoring health of adeployment state after migrating from a first deployment state to asecond deployment state according to one embodiment of the invention.

DETAILED DESCRIPTION

In general terms, embodiments of the present invention are directed to asystem and method for providing contact center services for differentbusiness enterprises that allows such enterprises to rapidly configureand deploy their contact center operations without the need of highskilled IT personnel or extensive pre-acquired knowledge of bestpractices for call center operations or setup. According to oneembodiment, the system provides a library of different routing logictemplates that span across a multitude of different routing strategiesfrom which a particular business entity may, during a configurationprocess, pick and choose depending on their needs. The templates may beused as building blocks for rapidly configuring and deploying thecontact center. The templates may give access to other sub-templatesbased on the level of customization or complexity that is desired tomeet the business objectives of the contact center. In this manner, evennon-IT personnel may quickly configure and deploy a contact centeroperation that meets the contact center's needs. As the contact center'sneeds change, different routing logic or configuration parameters may beselected and deployed for the contact center without requiringreprogramming or redeployment of customized software that may otherwisebe generated for the contact center.

According to one embodiment, the configuration of routing logic for acontact center using templates includes displaying a plurality ofrouting templates for user selection. According to one embodiment, eachof the routing templates is associated with metadata defining one ormore parameters of the corresponding routing template. A contact centeradministrator selects one of the displayed templates and furtheridentifies an entry point (e.g. a telephone number) to the contactcenter to which the selected routing template applies. The parametersdefined for the selected template are displayed, according to oneexample, for prompting user input. The administrator provides inputvalues for the displayed parameters. According to one embodiment, theuser input values are saved in association with the correspondingparameters and further in association with the identified entry point.The saved user input values are then retrieved for routing a particularinteraction arriving at the entry point.

Embodiments of the present invention are also directed to providing anintuitive graphical user interface which simplifies the process ofcomposing a routing strategy for the contact center and provides anintuitive configuration experience for the contact center administrator.In this regard, the interface may provide a set of basic building blocksthat even non-IT personnel may manipulate to build the contact center'srouting strategy. By selecting and organizing the building blocks viathe interface, the contact center administrator is provided with apictorial view of the logic behind the routing strategy (routingstrategy diagram) so as to allow the administrator to easily discern howan interaction will flow according to the routing strategy, which aidsthe configuration process.

According to embodiments of the present invention, the routing strategydiagram may be invoked for real-time monitoring of efficacy (or lack ofefficacy) of the corresponding routing strategy. For example, real-timecall conditions may be monitored and portions of the routing strategydiagram that are affected by the monitored call conditions may bevisually highlighted. Statistical analysis may also be performed basedon the detected call conditions. The use of the routing strategy diagramfor monitoring interaction flows allows details and conditions of thecontact center to be efficiently communicated to, and understood by, thecontact center administrator. The existing routing strategy may bereconfigured in response to the monitoring and statistical informationwithout the need of highly skilled IT personnel or extensivepre-acquired knowledge of best practices for call center operations orset up.

FIG. 1 is a schematic block diagram of a system for dynamicconfiguration, reconfiguration, and monitoring of contact centers (ortenants) 12 according to one embodiment of the invention. The systemincludes a communications network 10 (e.g., a transit network) that,according to one embodiment, is dedicated to facilitate interactions(e.g., calls or chats) between agents 11 of various contact centers 12,and end users 14 (or callers or customers). The interactions mayinclude, for example, telephone calls, VoIP communication, chats,emails, text messaging, WebRTC communication, or any other real-time ornon-real time media communication conventional in the art. The VoIPcommunication may be controlled by any signaling protocol configured tocontrol communication sessions over the Internet, such as, for example,session initiation protocol (SIP), H.323, and the like.

According to one embodiment, the dedicated communications network 10includes an edge device 22 such as, for example, a session bordercontroller (SBC), for controlling signaling and media streams involvedin setting up, conducting, and tearing down voice conversations or othermedia communications. Any session border controller conventional in theart may be used to implement the edge device 22. In this regard, thesession border controller includes a processor executing softwareinstructions and interacting with other system components to controlvoice or other media communications. The session border controller alsoincludes an addressable memory for storing software instructions to beexecuted by the processor. The memory is implemented using a standardmemory device, such as a random access memory (RAM).

The dedicated communications network 10 is coupled to one or moreprivate networks 16 a, 16 b (collectively referenced as 16). The privatenetworks 16 may be managed by one or more telecommunications companiesthat provide quality of service guarantees for VoIP calls traversing theprivate networks according to provider policies and limits of serviceordered by its customers. According to one embodiment, the privatenetworks 16 implement MPLS (Multi-Protocol Label Switching) fortransmitting the VoIP communication. Although MPLS is used as anexample, a person of skill in the art should recognize that any othermechanism in addition or in lieu of MPLS may be used for ensuringquality of service guarantees, bit rates, and bandwidth for callstraversing the private networks. Due to the quality of serviceguarantees provided by the private networks 16, consistent call qualityand security can generally be expected for those calls while traversingthe private networks.

End users 14 utilize end user devices (e.g. VoIP phones, computers,smart phones, etc.) to access the private network 16 b for VoIPcommunication via SIP trunk equipment 18. Although the SIP trunkequipment 18 is used according to one embodiment for accessing theprivate network 16 b, a person of skill in the art should recognize thatany other device for allowing the end user devices to access to theprivate network 16 b for VoIP communication or other types ofcommunication (e.g. email, chat, web-based communication, etc.) may beused in addition or in lieu of the SIP trunk. According to oneembodiment, access to the private network 16 b may also be via WebRTC,Skype, or via other networking systems (e.g. IP Multimedia Subsystem(IMS), public land mobile network (PLMN), or the like).

According to one embodiment, the remote computing environment 24 is acloud computing environment that allows the sharing of resources and theprovision of services over a network. In other embodiments, the remotecomputing environment provides resources used by a managed servicesprovider (MSP) to provide services to various contact centers. Althoughthe computing environment 24 is referred to as a remote computingenvironment, a person of skill in the art should recognize that thecomputing environment may be co-located or merged with the dedicatedcommunications network 10. In that case, the computing environment 24 isnot remote to the dedicated communications network. In otherembodiments, the computing environment 24 is co-located or merged withor any other network environment conventional in the art.

According to one embodiment, instead of hosting all contact centerapplications at servers located in the dedicated communications network,all or a portion of the applications are hosted by a server system inthe remote computing environment 24. The contact center applications maythen be provided to multiple tenants 12 as a software as a service(SaaS). Of course, the applications may also be hosted in otherlocations, including the dedicated communications network 10 or anyother network conventional in the art, without departing from the spiritand scope of the present invention. The contact center applicationsinclude but are not limited to applications that provide VoIP signaling,voice treatments (e.g. interactive voice response applications),multi-party calls (e.g. conference calls), and the like.

In the embodiment where cloud servers are utilized, the system in FIG. 1may be implemented as a hybrid cloud system where infrastructure andapplications for handling calls to and from a contact center aredistributed between the dedicated communications network 10 (controlledby a private enterprise) and cloud servers in the remote computingenvironment 24 (controlled by a public service provider/operator). Insome embodiments, the system of FIG. 1 may be implemented in such a waythat the infrastructure and applications are both controlled by a publicservice provider/operator. Also, in some embodiments, one or more of thecontact center applications on the cloud servers dedicated to particulartenants are not shared across various tenants. Of course a mix of sharedand dedicated contact center applications may be deployed.

A person of skill in the art should recognize that the system may alsobe implemented using solely a public or private cloud environment. Also,instead of engaging in VoIP communication with applications in theremote computing environment via the private networks 16 and thededicated communications network 10, the VoIP communication or othertypes communication (e.g. email, chat, web-based communication, etc.)may be conducted over a wide area network 32 such as, for example, thepublic Internet. In other embodiments, no cloud technology is used atall.

When a contact center receives an inbound call or engages in an outboundcall campaign, all or a portion of the call is serviced by one or morecontact center applications in the remote computing environment 24.According to one embodiment, the contact center applications for aparticular tenant may be transitioned/moved from one remote computingenvironment 24 to another, in the same or different region, in aseamless manner. The assignment of the applications to tenants may bedynamically controlled based on demand and availability of theapplications. The contact center applications may also be shared amongstdifferent contact centers.

According to one embodiment, tenants 12 engage in data communicationwith the remote computing environment 24 over the wide area network 32such as, for example, the Internet. According to one embodiment, alltenant user interfaces including a contact center configuration UI, ahome dashboard UI, a routing dashboard UI, a contact center monitoringUI, agent desktop UI, and/or a tenant administrative UI may be hosted bya third party web platform 20 over the Internet. According to oneembodiment, a specialized application running on the third partyplatform utilizes third party APIs to manage the tenant user interfacesand integrate with the third party infrastructure (e.g. third partydatabases). The application communicates with a web server 40 over theInternet for engaging in administrative tasks such as, for example,dynamically configuring and deploying a contact center, and/or forconducting other activities typical for a contact center agent 11. Aperson of skill in the art would recognize that the web server 40 may beimplemented as a stand-alone server or included in the remote computingenvironment 24.

According to one embodiment, the remote computing environment alsoincludes, without limitation, a configuration server 41, anorchestration/routing server 42, a SIP server 44, and a media server 46.According to one embodiment, the servers 40-46 are implemented assoftware components deployed on a single instance of a virtualserver/machine. The single instance of the virtual server/machine mayrun on a computer having one or more processors, disks, memories, andthe like. The various servers of the virtual machine may be dedicated toa single contact center tenant or shared by multiple contact centertenants. There may be multiple Virtual machines for a particular tenant,each virtual machine providing an execution environment for differentapplications. More than one virtual machine may also be used for backuppurposes (e.g. high availability and disaster recovery purposes).Although the servers 40-46 are assumed to be separate functional units,a person of skill in the art should recognize that the functionality oftwo or more servers may be combined or integrated into a single server,or further subdivided into additional server components withoutdeparting from the spirit of the invention. In addition, a person ofskill in the art should recognize that the remote computing environmentis scalable and may include a considerable number of virtual machinessharing a set of database servers 48 managing a set of mass storagedevices. Thus, the particular implementation of the server system in theremote computing environment 24 is solely for illustration purposes, anddoes not preclude other arrangements or components that will be evidentto a person of skill in the art.

According to one embodiment, the SIP server 44 is configured to receivecall signaling messages (e.g. SIP INVITE messages) from the edge device22, media server 46, and the like, for controlling the setting up ortermination of a call. Although a SIP server 44 is described, a personof skill in the art should recognize that other call controllers may beused in addition or in lieu of a SIP server.

The media server 46 is configured to identify parameters (e.g. availablemedia ports on the media server) for establishing voice conversationsbetween agents 11 and customers 14 (or end users), and provide thoseparameters to the SIP server for delivering to the edge device,customers 14, and agents 11. The media server 64 is also configured todeliver media to customers 14 and/or agents 11 via the edge device 22.For example, the media server 64 may be invoked to provide initialgreeting messages to a calling customer 14, and for obtaining basiccustomer information (e.g. identification information, reason for thecall, etc.). Also, if the customer 14 or agent 11 is placed on hold, themedia server 46 may be invoked to play music for the holding customer oragent 11. In another example, if a conversation between a customer 14and agent 11 is to be recorded, the call may traverse the media serverso that the customer 14 and agent 11 engage in a three way conversationwith the media server 46, and the media server 46 may record theconversation and store it in one or more database servers 48.

The orchestration/routing server 42 is configured to work with the SIPand media servers 46 for orchestrating the handling of calls based on arouting strategy associated with a particular contact center. Dependingon the type of routing strategy configured for the contact center, andthe specific values of parameters set for the routing strategy,different options, voice treatments, and routing is performed for thecall. Although the orchestration server 42 is depicted as being separatefrom the media server 46, a person of skill in the art should recognizethat the functionalities of the orchestration server may be merged intothe media server 46.

The configuration server 41 includes a configuration engine forautomatically configuring and/or reconfiguring a contact center. Forexample, the configuration server 41 may be configured to automaticallyallocate or reallocate particular resources in the remote computingenvironment 24 based on detected needs of the contact center.

According to one embodiment, one or more database servers 48 storevarious user-selectable templates for guiding a contact centeradministrator in configuring and deploying a contact center. Forexample, the templates may be routing templates where each templateprovides a routing logic for routing calls. The templates together spana multitude of industry verticals for which a contact center may bedesired (e.g. finance, retail, medical, etc.). As the administratorpicks and chooses the desired template(s) and provides values for theparameters identified by the template(s), those values are stored in themass storage device in association with the selected template(s) and anidentifier for the particular contact center (e.g. contact centertelephone number). The database servers 48 further store for eachcustomer contact center, a profile record which identifies profile andconfiguration information for the customer contact center. The databaseserver 48 may be included in the remote computing environment 24.

The remote computing environment 24 may further include a statisticsserver 50. The statistics server 50, according to one embodiment, maygather, store, and/or analyze data regarding the contact center, agents11 and end users 14. For example, the data of the statistics server 50may include data regarding agent availability, agent skills, averagecall time, average hold time, total talk time, after work time, averagespeed of answer, service level, maximum abandonment rate, patience rate,and the like.

According to one embodiment of the invention, various third partydeveloper devices 21 are also coupled to the remote computingenvironment 24 over the Internet. The third party developer devices maybe invoked to generate new business logic and upload a template andassociated metadata defining the routing logic to the remote computingenvironment. Once uploaded, the new templates may be made available foruse by different contact centers. In this manner, different entities maybe involved in extending the routing capabilities offered by existingtemplates.

FIG. 2 is a more detailed schematic block diagram of portions of thesystem of FIG. 1 according to one embodiment of the invention. Asillustrated in FIG. 2, the agent 11 or administrator for a contactcenter 12 (hereinafter collectively referred to as contact centerworker) has access to a computer having a web browser 51, and a phone 53capable of VoIP communication. The web browser may be invoked to accessthe third party web platform 20 for remotely conducting administrativetasks for the contact center and/or other call center agent activities.The third party web platform 20 hosts a specialized application 52stored in a memory and, which is configured to be executed by amicroprocessor. The specialized application 52 running on the thirdparty platform 20 may be dedicated to contact center managementactivities.

According to one embodiment of the invention, the contact center workeraccesses the specialized application 52 by logging into a web portalprovided by the third party platform 20. The web portal identifies theuser as a contact center worker based on the user's login information,and automatically invokes the specialized application 52 to render thegraphical user interface appropriate for contact center managementactivities. Thus a single login into the web portal acts also as a loginto the specialized application 52 to seamlessly invoke the applicationand provide an appropriate UI that is integrated into the web portal togive the look and feel of a single integrated application that isproviding the contact center management functionalities.

According to one embodiment of the invention, the specializedapplication 52 migrates data from the third party web platform (oranother database) to the specialized application 52 for modifying orextending such data and making it appropriate for use in a contactcenter setting. For example, user profile information stored by thethird party web platform may be migrated and integrated into thespecialized application to extend the user's profile by addinginformation that is relevant for a contact center setting. For example,the user's profile may be extended to add, for example, the user's role(e.g. contact center agent and/or contact center administrator), and theuser's skills (e.g. language skills).

Referring again to FIG. 2, the specialized application 52 accesses theweb server 40 in the remote computing environment 24 for engaging inadministrative tasks such as, for example, dynamically configuring anddeploying a contact center, real-time reconfiguration of a contactcenter, real-time monitoring of a contact center, and/or for conductingother activities typical for a call center agent. The contact centerworker may also access the web server 40 over the Internet directlywithout invoking the specialized application 52. The specializedapplication may also be hosted by the web server 40 or in any otherapplication server as will be apparent to a person of skill in the art.

The web server 40 is coupled to one or more computers running instancesof one or more virtual machines for one or more contact center tenants.Each virtual machine 54 may run a server used for providing a contactcenter service such as, for example, routing server, SIP server, mediaserver, database server, and statistics server 42-50 described withreference to FIG. 1. Exemplary contact center services include but arenot limited to processing inbound voice call, outbound voice calls,email processing, social media message processing, chat processing, callrecording, interactive voice response (IVR) processing, workforcemanagement, and administrative functions such as, for example, real timereporting, historical reporting, contact center configuration, and thelike. According to one embodiment, the virtual machines share thedatabase servers 48 for storing data relevant to contact centeroperations.

According to one embodiment, the configuration server 41 in the remotecomputing environment 24 runs a configuration script for automaticallyinstantiating a virtual machine for a contact center in the remotecomputing environment 24 according to desired parameters specified by aworker. One of such parameters may be, for example, the size/capacity ofthe contact center. According to one embodiment, the configurationengine dynamically allocates a virtual machine having a size thatcorresponds to the size specified by the user. For example, in responseto a user indicating that a contact center capable of supporting 100agents is desired, the configuration script dynamically instantiates avirtual machine capable of supporting 100 agents. If, however, thecontact center grows, and the contact center needs support for 1000agents instead of a 100, the configuration engine is configured todynamically instantiate a bigger virtual machine capable of supporting1000 agents. According to one embodiment, the configuration script isinvoked to automatically reload the contact center data from the currentvirtual machine to the new virtual machine. The configuration scriptalso automatically updates any relevant servers such that incomingtraffic is directed to the correct virtual machine. Thus, according toan embodiment of the invention, a contact center may be configured anddeployed automatically in the remote computing environment, andreconfigured and redeployed automatically if necessary, for example, toscale up or down the capabilities of the contact center, all withoutrequiring physical installations of hardware and software at the tenantpremises, and without downtime associated with such physicalinstallations which negatively affect contact center operations.

Additionally, the configuration engine may dynamically reconfigure acontact center's logic relating to the routing or flow of interactions,and/or other logic operations. For example, in response to a contactcenter worker requesting that the contact center be capable of routingcalls based on a language selection of English or Spanish by a caller,the configuration script dynamically configures the contact center'srouting strategy to allow it to prompt the caller to select English orSpanish, and to direct the call to an agent queue based on theselection. Thus, according to an embodiment of the invention, a contactcenter may be reconfigured and redeployed automatically based ondifferent types of requirements by automatically reconfiguring thevirtual machine associated with the contact center.

According to another embodiment of the present invention, the remotecomputing environment 24 may run a monitoring script so that a contactworker may monitor real-time activity, review historical data, and/orsimulate conditions of the contact center. Here, the contact centerworker may login into the web portal to seamlessly invoke a monitoringapplication that may be integrated with the contact center management UIto give the look and feel of a single integrated application that isproviding the contact center configuration and monitoringfunctionalities. The contact center management UI may visually depictcontact center data, such as contact center logic, current contactflows, abandonment rate, average call time, and the like, such that thedata may be easily and readily apparent to the contact center worker.The contact center data may be provided from, for example, thestatistics server 50.

According to another embodiment, a contact center monitoring script andUI may be provided independently of the contact center configurationscript and UI.

FIGS. 3-21 are screen shots of various example screens illustratingaspects of the graphical user interface (UI) of the specializedapplication 52 according to one or more embodiments of the presentinvention. A person of ordinary skill in the art should recognize thatthe graphical user interface may be provided by, for example, thethird-party web platform 20, the web server 40, or one or more serversof the remote computing environment 24, but is not limited thereto. Forexample, the graphical user interface may be provided by an applicationserver on contact center premises or hosted remotely in the remotecomputing environment. For simplicity purposes, however, embodiments ofthe present invention are described in terms of the specializedapplication 52 as rendering the graphical user interface.

According to one embodiment, the specialized application 52 mayrecommend routing strategies to contact center workers according to,e.g., industry best practices. The graphical user interface may also beused for intuitively guiding a contact center worker step-by-step inconfiguring a routing strategy according to the specific contactcenter's business needs. According to one aspect of the presentinvention, the graphical user interface may be used for monitoringand/or simulating the operation of the contact center.

FIG. 3 is a screen shot of a UI page 200 for guiding a contact centerworker in configuring a contact center according to one embodiment. TheUI page 200 may be one of the first pages a contact center worker ispresented with after logging in. For example, the UI page 200 may be astart page upon first use of the specialized application 52. Here, whena contact center worker logs in for setting up the contact center, thespecialized application 52 renders a UI page with various configurationand/or management options. Such options may include, for example, anagent management option 202, a routing configuration option 204, and areport management option 206.

When the contact center worker selects the management option 202,another UI page is generated to enter agent information, such as, agentgroups, agent skills, agent profiles, and the like. In one embodiment,the agent information is stored on the database server 48 for later use,including for use when configuring a routing strategy, viewing reports,or monitoring a call center. While the agent management option 202 hasbeen described in relation to an initial setup operation, the agentmanagement option may also be selected for editing or updating agentinformation, for example, to add or update agent profiles, groups, orskills. According to one embodiment, the contact center worker isdirected to complete the agent management option 202 before selectingthe routing configuration option 204 or the report management option206.

When a contact center worker selects the routing configuration option204, for example by selecting (e.g., clicking) the start button 208, arouting UI page is generated to receive data, for example, routing logicinformation and contact center parameters. According to one embodiment,by selecting the routing configuration option 204, the contact centerworker invokes the configuration script of the specialized application52. The routing configuration option 204 may be selected after the agentmanagement option 202 has been completed by the user to configure acontact center (e.g., a first setup); however, the present invention isnot limited thereto, and the routing configuration option 204 may beinvoked after the first setup to reconfigure an existing contact center(e.g., real-time reconfiguration) and/or monitor the contact center. Therouting configuration option 204 is described in greater detail below.

When a contact center worker selects the report management option 206, areport UI page is generated to view reports regarding the contactcenter. The report UI may be generated according to a report script ofthe specialized application 52. In one embodiment, the report UIdisplays contact center information in such a way that the contactcenter information may be readily and clearly communicated to a contactcenter worker. Contact center information may include, total abandonedcalls, call abandon rate, number of calls per agent skill group, callvolume, productivity, call rate, and the like. The data associated withthe contact center information may be provided by the remote computingenvironment 24. For example, the data may be stored in the databaseserver 48 and analyzed by the statistics server 50.

Hereinafter, a routing configuration graphical user interface accordingto one embodiment of the invention is described in greater detail withreference to FIGS. 4-21.

FIG. 4 is a screen shot of a UI page 220 rendered upon selection of therouting configuration option 204. According to one embodiment the UIpage 220 prompts the user for initial routing configuration information,such as a routing name, a routing strategy type, and a contact centerphone number. For example, the UI page 220 may display a strategy nameentry field 222, a strategy type entry field 224, and a phone numberentry field 226 to receive the initial routing configuration informationfrom the contact center worker.

The strategy name entered by the contact center worker, may be used toidentify a particular routing strategy and to differentiate theparticular routing strategy from other routing strategies. For example,the user may name a first strategy “Main Line” to associate this routingstrategy with the main customer service line and to differentiate therouting strategy from that of a preferred customer service line, whichmay be named “Preferred Line.” Additionally, the contact center worker,may select a strategy type (e.g., select from a drop down menu 224).Strategy types may include, phone, text chat, voice chat, and the like.According to one embodiment, the selection of the strategy type changesthe default routing templates available for selection. For example, ifthe phone strategy type is selected, templates associated with callcenter best practices may be presented to the contact center worker forselection in a subsequent step.

The UI page 220 may display a phone number entry field 226 for thecontact center worker to associate a particular phone number with therouting strategy. In the exemplary embodiment of FIG. 4, the phonenumber entry field 226 includes a phone number generation field 226A andan existing phone number entry field 226B. Here, the contact centerworker may elect to enter a predetermined phone number via the existingphone number entry field 226B, or have a new phone number generated viathe phone number generation field 226A. According to one embodiment, thephone number entry field 226 may not be presented when the phonestrategy is not selected.

The phone number generation field 226A, according to one embodiment, hasentry fields for receiving parameters for the phone number generation.For example, the phone number generation field 226A may have an entryfield for selecting a 1-800 number, entering an area code, entering aphrase, and the like. After the parameters are entered, the specializedapplication 52 may generate a phone number according to the parameters(numbers which are unavailable may be excluded). For example, if acontact center worker enters the area code “415” and the phrase“design,” the specialized application 52 may generate the phone number“1-415-4-DESIGN”. The generated number may then be associated with theparticular routing strategy.

After the initial routing configuration information has been entered,the contact center worker may advance to the routing strategyconfiguration by, for example, selecting a “NEXT” button 228.

FIG. 5 is a screen shot of a UI page 240 for selecting a routingtemplate for the particular routing strategy identified in FIG. 4. TheUI page 240, according to one embodiment, displays a routing templateselection menu 242 that includes a plurality of routing templates 244for selection by the contact center worker. According to one embodiment,the template selection menu 242 displays predefined routing templates244A, a blank canvas template 244B, and an existing template 244C.

The predefined templates 244A may be standard templates that arepreloaded in the specialized application 52. According to oneembodiment, the predefined templates 244A correspond to industry bestpractice routing design. The predefined templates 244A may include abasic template, a basic plus template, a menu template, a menu plustemplate, a multi-lingual template, and a multi-lingual plus template,but are not limited thereto. Additional predefined templates 244A may beavailable for selection through a template library; the template librarymay be an online template library. According to an embodiment of thepresent invention, the predefined templates may be change-protected,configurable, or a hybrid thereof. For example, a template may include achange-protected parent routing strategy with configurable individualsub-branches included within the parent strategy.

According to one embodiment, the basic template corresponds to a routingstrategy including a welcome operation and a route to agent operation;the basic plus template corresponds to a routing strategy including awelcome operation, an hours operation, and a route to agent operation.The menu template corresponds to a routing strategy including a welcomeoperation, a menu operation, and a route to agent operation. The menuplus template corresponds to a routing strategy including a welcomeoperation, an hours operation, a menu operation, and a route to agentoperation. A multi-lingual template corresponds to a routing strategyincluding a welcome operation, a language selection operation, and aroute to agent operation. The multi-lingual plus template corresponds toa routing strategy including a welcome operation, an hours operation, alanguage selection operation, and a route to agent operation. Of course,embodiments of the present invention are not limited to these types ofoperations. Other routing strategy operations will be evident to aperson of skill in the art.

According to one embodiment, each predefined template 244A provides avisual representation of the general routing strategy that it representsto clearly and readily communicate that strategy to the contact centerworker (e.g., communicate at-a-glance). The contact center worker mayselect a particular routing template 244 by clicking on the visualrepresentation of the particular routing strategy.

According to one embodiment, the blank canvas template 244B does notcorrespond to a predefined reporting strategy, but instead, representsan option for the contact center worker to define a custom routingstrategy. When the contact center worker selects the blank canvastemplate 244B, the specialized application 52 may execute a routingstrategy editing script. Additionally, when the contact center workerselects the existing template 244C, another UI page or a pop-up menu maybe displayed so that the contact center worker can select frompreviously created routing strategies.

To go back to a previous routing strategy configuration page (e.g., theUI page 220 to change the initial routing configuration information),the contact center worker may select a “PREV” (or previous) button 246.However, to proceed with configuring the routing strategy, a “NEXT”button 247 may be selected. According to one embodiment, when the “NEXT”button 247 is selected, the routing strategy editing script isinitialized. If, however, the contact center worker wants to cancel theconfiguration of the routing strategy, a “CANCEL” button 248 may beselected.

FIG. 6 is a screen shot of a UI page 260 rendered in response toselection of a particular routing template in the UI page 240 (e.g. themenu plus routing template 244A) according to one embodiment of thepresent invention. The UI page 260 may be generated according to therouting strategy editing script of the specialized application 52.

According to one embodiment, the UI page 260 displays a routing strategydiagram 262 including various configurable blocks 264A-D (collectivelyreferred to as blocks 264). According to an embodiment of the presentinvention, the blocks 264 visually represent the configurable operationsof the routing strategy (or routing logic steps). According to oneembodiment, the blocks are laid out intuitively by depicting the flow ofan interaction that is to be handled by the routing strategy. In thisregard, the routing strategy diagram 262 is configured to give abirds-eye view of the routing strategy to enable a contact center worker(who may not be an expert in contact center routing strategy) tointuitively understand the flow of contact interactions (e.g., phonecalls) through the contact center.

According to one embodiment, the routing strategy diagram 262 resemblesa logic tree (or decision tree) without loops or merging of branches. Inthis regard, the routing strategy diagram may be a simplified flowdiagram to provide at-a-glance understanding of the routing strategy.For example, as illustrated in FIG. 6, the blocks 264 may be coupled toeach other to indicate how the contact events flow through the contactcenter and/or to indicate specific treatment of the events via thediscrete blocks. According to some embodiments, the routing strategydiagram includes loops and/or merged branches.

According to one embodiment, the blocks 264 may include start blocks264A, intermediate blocks 264B, branch blocks 264C, end blocks 264D, andthe like. However, a person of ordinary skill in the art should realizethat embodiments of the present invention are not limited to the blocksor template block structures defined herein, but may include numerousother blocks or block structures suitable for use in a contact centerrouting strategy. For example, embodiments of the present invention mayinclude merging blocks or loop blocks, or may include block structuresof a predefined or arbitrary length.

A start block 264A may represent a first operation executed when a newcontact interaction begins (e.g., when a new call is received). Anexample of a start block 264A is a welcome block. According to oneembodiment, the start block 264A is coupled to at least one other block264, which represents a next operation to be executed in the particularrouting strategy of the call center. For example, in the embodimentillustrated in FIG. 6, the welcome block is coupled to an hours block.Additionally, as shown in FIG. 6, the start block 264A (or any otherblock 264) may indicate the direction of the routing flow (e.g., by anarrow).

The intermediate block 264B may represent an intermediate operation ofthe contact center routing strategy, e.g., an operation executedin-between the start block 264A and the end block 264D. Examples of anintermediate block 264B include, without limitation, an hour block, amessage block, a hold block, and the like. According to one embodiment,the intermediate block 264B is coupled to at least two other blocks 264(e.g., the previous and subsequent blocks in the routing strategy). Forexample, in the embodiment of FIG. 6, the hours block is coupled betweenthe welcome block and the menu block.

A branch block 264C may represent a branch operation of the contactcenter routing strategy. The branch operation, according to oneembodiment, includes a decision operation (or a path selectionoperation), where an end user 14 (or other entity), is presented with atleast two options for selection, and the routing path changes accordingto the option that is selected by a customer. Examples of a branch block264C include, without limitation, a menu block, a language block, adepartment selection block, a support selection block, a skill selectionblock, and the like. According to one embodiment, and as shown in FIG.6, the branch block 264C is visually represented by a branch and iscoupled to a previous block and at least two subsequent blocks in therouting strategy. For example, in the embodiment of FIG. 6, an input tothe menu block is coupled to the hours block. The menu block has threebranches (Menu 1, Menu 2, and Menu 3), and the output of each branch iscoupled to a route to an agent block.

An end block 264D represents an operation that terminates a particularinteraction flow. Examples of end blocks 264D include, withoutlimitation, a route to agent block, a route transfer block, a route tomessage block, a voicemail block, an end interaction block, and thelike. According to one embodiment, the end block 264D is coupled to atleast one previous block. For example, in the embodiment of FIG. 6, theroute-to-agent blocks are each coupled to one of the outputs of the menublock.

As described above, each of the blocks 264 represent a particularoperation of the routing strategy, and when coupled together in aparticular order to form the routing strategy diagram 262, they visuallyrepresent and efficiently communicate (e.g. at-a-glance) the routingstrategy (or interaction flow) of the contact center. Not only does thisvisual representation aid the contact center worker in understanding thefinal (e.g., implemented) routing strategy of the contact center, butalso, it aids in the configuration and build process of a particularrouting strategy.

While, according to one embodiment, a routing template 244 selected fromthe UI page 240 may be preconfigured with default parameters to enableout-of-the-box setup of a contact center, aspects of the presentinvention provide for further configuration and customization of therouting strategy. This may be communicated to the contact center workerby, for example, displaying a pop-up window 266 inviting the contactcenter worker to configure parameters of the blocks 264 oradd/remove/move blocks 264.

According to one embodiment, the contact center worker may configure(e.g., input parameters of) a particular block 264 by selecting (e.g.,clicking on) the particular block in the routing strategy diagram 262.By visually displaying the routing strategy as an association of blocks262, the contact center user may easily determine where the block is inrelation to the overall routing strategy, which aids in the blockconfiguration process.

According to one embodiment, another UI page is rendered upon selectionof one of the blocks 264 enabling the contact center worker to input theparameters associated with the selected block 264. Examples ofconfiguring particular blocks 264, according to one embodiment, aredescribed hereafter in connection with FIGS. 7-11.

FIG. 7 is a screen shot of a UI page 280 rendered upon selection of thewelcome block of FIG. 6 according to one embodiment of the invention.The UI page 280 displays the parameters associated with the welcomeblock that the contact center worker may configure. For example, in theembodiment shown in FIG. 7, the contact center worker may configure thewelcome message that is played to a customer calling into the contactcenter. The welcome message may be configured via a messageconfiguration field 282. According to one embodiment, the messageconfiguration field includes a playback function, a text-to-speechfunction, and a message selection function. The playback function, whenselected, plays back the message currently associated with the welcomeblock (e.g., a greeting and an identification of the company). Thetext-to-speech function, when selected, may enable entry of text that isused to generate the message via a text-to-speech operation. The messageselection function may enable the contact center worker to select anexisting message file or to create a new message.

According to one embodiment, when the message selection function isselected, a UI page 300 is rendered for the selection of the message, asshown in FIG. 8. The UI page 300 may display a media library 302including a plurality of media files 304 for selection as the welcomemessage. Additionally, the contact center worker may have the option ofuploading another media file to the media library 302 (for current orlater selection). According to one embodiment, the media files 304 ofthe media library 302 are saved to and retrieved from the media server46.

Referring again to FIG. 7, once the parameters for the selected block(e.g. the welcome block) are configured, the contact center worker mayproceed to configure another block. The contact center user may selectthe next block for configuration by, for example, returning to the UIpage 260 displaying the flow diagram 262 (e.g., by selecting a thumbnaildisplay of the flow diagram 284) and clicking on a block 264, or byselecting a block from the block configuration tab 286. The blockconfiguration tab 286 may highlight the currently selected block.

FIG. 9 is a screen shot of a UI page 320 rendered upon selection of thehours block, according to one embodiment of the invention. The UI page320 displays the parameters associated with the hours block that areavailable for configuration. According to one embodiment, the hoursblock represents an hours of operation function, which performsdifferent operations according to a time and date of the interaction.For example, if an end user 14 calls during the normal operating hours,the hours block may pass the call through to the next block; or if anend user 14 calls on a holiday, the hours block may play a holidaymessage and/or route to voicemail. To this end, the hours block may havea normal hours input field 322, a holiday input field 324, and a messageinput field 326.

According to one embodiment, the normal hours input field 322 includessliders which allow the contact center worker to select a time frame ofthe normal hours of operation. Different sliding bars may be associatedwith different days of the week. The holiday input field 324 may enablea contact center worker to enter holidays, for example, by selectingdays on a calendar. The message input field 326 may allow a contactcenter worker to configure a message to be played when an interactionoccurs outside the normal hours of operation or on a holiday. Themessages may be selected from the media library 302.

FIG. 10 is a screen shot of a UI page 340 rendered upon selection of themenu block for configuration, according to one embodiment. The UI page340 may allow for the creation of menu items and menu operations. The UIpage 340 of FIG. 10 includes a menu creation field 342 and a contingencyfield 344.

The menu creation field 342 may include a key sub-field 342A, a labelsub-field 342B, a file sub-field 342C, an add menu item button 342D, anda delete menu item button 342E. The key sub-field 342A is for definingthe association of a menu item with a key entry (e.g., on a touch-tonephone). The label sub-field 342B is for naming each menu item. The filesub-field 342 is for the selection of a media file associated with themenu item (e.g., a message describing the menu item). The media file maybe selected from the media library 302 or entered as text-to-speech. Theadd menu item button 342D and the delete menu item button 342E enablethe addition or deletion of menu item fields. According to oneembodiment, by adding or deleting menu items, the menu block shown inthe routing strategy diagram 262 includes more or fewer branches.

According to one embodiment, the contingency field 344 enablesconfiguration of contingency events if, for example, no menu item or aninvalid menu item is selected.

While the above description is in relation to a menu block, a personskilled in the art should recognize that aspects of the menu block arerelevant to other branch blocks 264C, for example, a language block (forselecting a language), a business division block (for selecting whichdivision of a business the interaction is related to), an account block(for selecting which account the interaction is related to), and thelike.

FIG. 11 is a screen shot of a UI page 360 rendered upon selection of aroute to agent block according to one embodiment. The UI page 360 inFIG. 11 includes a main agent group field 362, an alternative agentgroup field 364, a contingency field 366, and a hold option field 368.According to one embodiment, the main agent group field 362 is forreceiving the preferred agent groups (or skill groups) to be associatedwith the route to agent block; and the alternative agent group field 364is for receiving the secondary agent groups to be associated with theroute to agent block. The groups (e.g., skill groups) available forselection may correspond to the groups created in the agentconfiguration operation 202. According to one embodiment, the preferredagent group is the agent group that the routing logic first attempts toroute the interaction (e.g., a call) to, and the alternative agent groupis the backup group to route to if a definable condition (e.g.,estimated wait time longer than a set amount) occurs.

The contact center worker may configure a contingency option with thecontingency field 366 to define an operation to be executed if no agentsare available (e.g., forward to voicemail, route transfer, etc.). Thecontact center worker may also configure hold music (e.g., by selectionfrom the media library 302).

While the above description relates to a route to agent block, a personof ordinary skill in the art should recognize that aspects ofconfiguring the route to agent block are applicable to other end blocks264D, for example, a route transfer block (for sending the interactionto another routing strategy), a route to voicemail block (for sending acall to a voicemail box), and the like.

In addition to configuring the parameters of the blocks 264 of therouting strategy, according to one embodiment, the routing strategyitself may be configured (or built e.g., from the blank template 244B).Additionally, because the routing strategy may be displayed in thesimplified birds-eye-view, the contact center worker is aided by beingable to intuitively understand the flow of interactions through thecontact center when configuring (or designing) the routing strategy.

FIGS. 12-15 are screen shots of a UI page 380 rendered by thespecialized application 52 for composing a routing strategy according toone embodiment. A contact center worker may compose the routing strategyfrom scratch, or based on a preset template. In this regard, the UI page380 may display a block toolbar area 382. In the illustrated embodiment,the block toolbar area 382 includes a plurality of blocks 264 availablefor use in defining the routing strategy for the contact center andbuilding the routing strategy diagram 262. The blocks 264 in the blocktoolbar area 382 may correspond to basic building blocks of routingstrategies according to best practices. According to the embodiment ofFIG. 12, when a contact center worker hovers a cursor over a block 264in the block toolbar area 382, a description of the block is displayed,for example, in a pop-up window.

An aspect of the present invention provides for visual configuration ofa routing strategy using the routing strategy diagram 262 and blocks264. According to one embodiment, the routing strategy is defined by theblocks, and the location of those blocks relative to one another. Thus,in composing a routing strategy, an administrator selects an appropriateblock from the block toolbar area that is to provide a desired treatmentfor an interaction, and further identifies a location on a workspacearea 390 where the selected block should be inserted relative to otherblocks that may already be positioned in the workspace area. Theidentification of the location where the selected block should beinserted may be done via any conventional mechanism in the art.According to one embodiment, a user may import a block from an externalsource upon actuating an “import” option 392. The imported block appearsin the block toolbar area 382 and is available for being selected by theadministrator in building a routing strategy.

FIG. 13 is a screen shot of a UI depicting the building of a routingstrategy via a drag-and-drop mechanism according to one embodiment ofthe invention. In the embodiment of FIG. 13, a contact center workerdrags and drops a block 264 from the block toolbar area 382 into aparticular location in the routing strategy diagram 262 displayed in theworkspace area 390. In response to dropping the block at a particularlocation relative to other pre-existing blocks in the workspace area,the specialized application is configured to rearrange/reorganize thepre-existing blocks to allow the placement of the selected block 264 inthe identified location where the block was dropped. A selected blockmay be dropped before, after, or in-between existing blocks. A selectedblock may also be dropped on top of an existing block to indicate thatthe existing block is to be replaced. The specialized application 52 maythen redefine the routing strategy according to the placement of theblock 264. For example, in the embodiment of FIG. 13, by placing anotherhours block in-between the sales branch of the menu block and the routeto agent block, the routing strategy is redefined to execute an hoursoperation after taking the sales branch of the menu selection. Inaddition to adding blocks 264 from the block toolbar 283, blocks 264currently in the routing strategy diagram 262 may be moved or removedaccording to any conventional mechanism in the art.

Additionally, the specialized application 52 may include automatedgraphical layout optimization. For example, after the contact centerworker creates a routing strategy in the workspace area 390, thespecialized application 52 may rearrange/reorganize the blocks 264 inthe workspace are 390 so that the blocks are optimally arranged for theconfigured routing strategy. The automated graphical optimization mayarrange the routing strategy into sub-sections that may be zoomed in orout or expanded or collapsed.

According to an embodiment of the present invention, the specializedapplication 52 may indicate issues (or errors) during the building of arouting strategy (e.g., at initial setup or re-configuration). Issues inthe routing strategy may arise, for example, when there are orphanedblocks, improperly coupled blocks, parameter issues, anticipatedoperational issues, and/or the like. Additionally, the specializedapplication 52 may detect coverage gaps (i.e., a subsequent block doesnot include the full range of outputs from a previous block),superfluous branches (i.e., branches that are supposed to process valuesthat are outside of output scope from previous block), or endless loops.In this regard, the specialized application is configured to apply oneor more rules in allowing the addition, deletion, and/or reordering ofblocks in the workspace area.

FIG. 14 is a screen shot of a UI for efficiently communicating theexistence of an error via the routing strategy diagram 262 according toone embodiment of the invention. For example, a block 264 of the routingstrategy may be displayed in a particular color (e.g., red or yellow)when there is a connection error, a parameter error, or an operationerror associated with the block 264. The identification of the error maybe based upon the application of the one or more rules by thespecialized application. As another example, an icon 386 may bedisplayed indicating an error in the routing strategy, and a pop-upwindow 387 may be displayed describing the error. For example, as shownin FIG. 14, the icon 386 and the pop-up window 387 display an alert thatthere are orphaned blocks (e.g., disconnected blocks).

Additionally, according to one embodiment, the specialized application52 may suggest a solution to the indicated error. For example, thepop-up window 387 may suggest removing an orphaned block.

After the routing strategy is configured, the routing strategy may besaved by selecting, for example, the “Done” button 388.

FIG. 15 is a screen shot of a UI page 400 rendered after the routingstrategy is configured and saved according to one embodiment of theinvention. The UI page 400 displays the configured routing strategy 262including the blocks 264 as the birds-eye-view of the interaction flow.Additionally, the UI page 400 may include a “Preview” button 402 topreview the operation of the routing strategy and a link 406 to see allversions of the routing strategy.

FIG. 16 is a screen shot of a UI page 420 rendered when the previewbutton 402 is selected according to an embodiment of the invention.According to one embodiment, the UI page 420 is rendered according to asimulation script of the specialized application 52.

The simulation script (or what-if testing) according to one embodiment,is a script which simulates the activity of a routing strategy of acontact center according to contact center data, which may includehistorical data, mathematical models, agent attributes, operationparameters, and the like. The contact center data may be captured frompast interaction traffic, detailed reporting, application logs, industrypractices, and the like. According to one embodiment, the contact centerdata is received from the database server 48 and/or the statisticsserver 50.

When running the simulation script, the contact center worker may entercontact center conditions (e.g., select a scenario, enter ownconditions, or import actual or historical conditions) to simulate. Thecontact center conditions may include, for example, agent schedules,agent proficiencies, call volume, call frequency, call types, call/afterwork/down times (average/variants), and the like. According to oneembodiment, the simulation is run according to the entered contactcenter conditions and the configured routing strategy.

The simulation may be controlled via a simulation control panel 422. Thesimulation control panel 422 may include options to play, pause, fastforward, rewind, speed up, slow down, and the like. Additionally, aninput panel 424 may be provided for the contact center worker to providesimulation input. For example, the input panel 424 may be a key pad forthe contact center user to input a key during a simulated call.

The UI page 420 may include a timeline 426 for indicating the playbackof the simulation. The timeline 426 may include a slide tool forchanging the playback time.

According to another embodiment, UI page 420 for the simulation scriptmay include a simulation mode selector 428. The simulation mode selectormay include an input for selecting a simulation mode, for example, aninteraction flow (e.g., a call flow), an abandonment analysis, or a fullsimulation.

According to one embodiment, when the call flow mode is selected, thepreview UI simulates the flow of a single call through the routingstrategy. Here, the input panel 424 may simulate the key pad of theend-users phone, and the timeline 426 may indicate the location on therouting strategy diagram 262 currently being simulated. Additionally, inthe call flow mode, the simulator may play back the messages, and recordsimulated voicemails as if there was an actual call.

When the full simulation mode is selected, the simulator script,according to one embodiment, simulates the function of the entirecontact center (i.e., simulates multiple concurrent agents and endusers). Here, the timeline 426 may represent the time of day, andconditions may vary according to the time of day.

According to one aspect of the present invention, the simulationindicates conditions (e.g., errors, issues, rates, volume, amounts,etc.) of the simulated contact center according to the current routingstrategy. The simulator may indicate a condition by a visual cue (color,animation, change of icon, flashing) or audible cue (beep, alert, orannouncement). Here, the cues may be customized to represent a varietyof conditions.

As shown in the embodiment of FIG. 16, the simulation may indicateconditions of the simulated contact center via the colors of the blocks264 in the routing strategy diagram 262. For example, the cues mayrepresent an abandonment rate. In this case, a green color may indicatea low rate of abandonment associated with the block, yellow may indicatea moderate rate, and red may indicate a high rate. The thresholds forthese levels may be set by the contact center worker. Other types ofconditions that may be displayed by the simulation include, but are notlimited to, a heat flow (e.g., of call volume), average/maximum calltime, average/maximum wait time, average/minimum speed of answer,average/maximum occupancy rate, performance, quality of service, and thelike.

As described above, the conditions of the call center are associatedwith individual blocks (e.g., via the visual cues). Accordingly, acontact center worker may identify areas of the particular routing logicthat may need attention. For example, if the sales branch was simulatedas having a high call abandonment rate, the contact center worker may bealerted (e.g., via the visual cues) that the routing strategy associatedwith that branch needs attention (e.g., reconfiguration). To this end,the simulation script may employ contact center models, statisticalanalyses, queue system theory, and the like (e.g., employing the ErlangA, B, or C formulas as is well known in the art). Additionally, thesimulation may take into account actual configuration informationrelated to a particular call center, such as number of agents, agentskills (including defined and assigned skills), agent proficiency, callcenter capacity, agent capacity, workforce schedule, and the like.

According to another aspect of the present invention, the simulationscript may offer suggested solutions to anticipated issues. For example,if a call abandonment rate in the sales branch is high, the simulatormay suggest associating an auxiliary agent group with that branch orthat the calls be routed to voicemail sooner. These suggestions may bebased on best practices, historical data, contact center models, queuesystem theory, and the like. According to an embodiment of the presentinvention, there may be provided a list of previous issue root causes(e.g., sorted by frequency); this list may be personalized to aparticular user/administrator based on the issues which arise in theirconfigurations. The simulation script may be initiated by a contactcenter user, or may be triggered by recent changes in the configurationor workforce schedule (e.g., changing from a previously correctlyworking configuration or workforce schedule).

In addition to the cues automatically generated, the contact centerworker may selectively observe additional information regarding therouting strategy. For example, as shown in FIG. 16, the contact centerworker may hover a cursor over a particular block 264 to display atool-tip 430, which displays relevant information associated with theblock (bubbled-up data). Additionally, the particular block 264 may beselected, which may generate a new UI page providing detailedinformation associated with the particular block (drill-down).

Referring again to FIG. 15, after simulating the contact center routingstrategy, the contact center worker may return to editing the routingstrategy by selecting the “Edit Route” button 404. Additionally,according to the embodiment of FIG. 15, other versions of the routingstrategy may be viewed or selected by selecting the “See all versions”link 406.

FIG. 17 is a screen shot of a UI page 400 rendered upon selection of the“See all versions” link 406. The UI page 400 displays a version menu 442listing different versions 444 of the routing strategy. By selecting aversion 444 from the version menu 442, according to one embodiment, theselected version 444 of the routing strategy becomes the current routingstrategy ready for activation or editing.

Referring again to FIG. 15, once a routing strategy is configuredaccording to the requirements of the contact center worker, the contactcenter worker may activate the routing strategy currently selected by,for example, selecting an “Activate route” button 408.

According to one embodiment, when the selected routing strategy isactivated, the configuration server 41 in the remote computingenvironment 24 runs a configuration script for configuring a virtualmachine for a contact center in the remote computing environment 24according to the selected parameters of the routing strategy.

According to one aspect of the invention, a contact center worker maymonitor and reconfigure a currently operating contact center via adashboard UI. According to one embodiment, the dashboard UI may berendered by the specialized application 52.

FIG. 18 is a screenshot of an exemplary dashboard UI 420 according toone embodiment of the invention. The dashboard UI 420 may include aplurality of UI pages 422 for monitoring and/or configuring a contactcenter. The UI pages 422 may include, but are not limited to, a homedashboard, an agent groups dashboard, a agents dashboard, agent details,a routing dashboard, a route map, route details, reporting dashboard,and report details.

FIG. 19 is a screen shot of a UI page 440 rendered as the home dashboardaccording to one embodiment. The home dashboard includes relevantinformation to the operation of a contact center that is displayed in ahighly accessible and efficient manner to effectively communicate thecurrent condition (e.g., health, capacity, etc.) of a contact center ata glance. For example, as shown in the embodiment of FIG. 19, the homedashboard may include an interaction report window 442, an agent reportwindow 444, and a routing strategy window 446.

The interaction report window 442 may include charts, graphs, or otherdisplays indicating relevant interaction information such as, number ofcall, calls in progress, calls waiting, maximum wait time, average waittime, abandonment rate, and the like. The interaction report window 442may be configurable, for example, the interaction report window may beconfigured to display information spanning the day or another period oftime.

The agent report window 444 may include, charts, graphs, or otherdisplays indicating relevant information about the agents 11, including,number of agents, agents in call, agents performing after work, agentsready, agents not ready, average call handling time, average after callwork time, longest idle time, and the like. The agent report window 444may also be configurable, for example, the contact center worker mayselect a particular skill group to display in the agent report window444.

The routing strategy window 446 may include a routing strategy diagram(e.g., a routing strategy diagram substantially similar to the routingstrategy diagram 262). According to one embodiment, the routing strategydiagram is a birds-eye-view of interaction flows through the routingstrategy with visual cues to communicate the current or historical state(e.g., health, heat flow) of the call center at-a-glance.

Each of the call report window 442, agent report window, 444, and therouting window 446 may be selected by the contact center worker todisplay more information. For example, the contact center worker mayhover a cursor over a portion of a window to display a tool-tip windowcontaining some of the more relevant information associated with theselected portion. Additionally, one of the windows 442-446 may beselected to provide another UI page with more detailed information.

FIG. 20 is a screen shot of a UI page 460 rendered by the specializedapplication 52 when the user selects the routing window 446 for moredetailed information according to an embodiment of the invention. The UIpage 460, according to one embodiment, displays a routing diagram 462including blocks 464. The routing diagram 462 and the blocks 464according to one embodiment are similar to the routing strategy diagram262 and the blocks 264, previously described (e.g. with respect to FIG.6). Accordingly, some aspects or features of the routing diagram 462 andthe blocks 464 are described by way of reference to the previouslydescribed routing strategy diagram 262 and the blocks 264. For example,the “Preview” button 468 and the “Edit Route” button 470 serve similarfunctions as the “Preview” button 402 and the “Edit Route” button 404previously described.

According to one embodiment, each of the blocks 464 represent aparticular routing operation, and when coupled together in a particularorder (i.e., as the routing diagram 462), visually represent andefficiently communicate (at-a-glance) the routing (or interaction flow)of the contact center. Additionally, because of visual or audible cuesassociated with the blocks 464, conditions (e.g., heat flows, errors,issues, etc.) may be easily communicated and understood.

According to an aspect of the invention, the routing diagram 464indicates conditions (e.g., errors, issues, rates, volumes, amounts,etc.) of the contact center in real-time or historically. For example,the routing diagram 464 may indicate a condition by a visual cue (color,animation, change of icon, flashing) or audible cue (beep, alert, orannouncement). Here, the cues may be customized to represent a varietyof conditions.

As shown in the embodiment of FIG. 20, the routing diagram 464 mayindicate conditions of the contact center via the colors of the blocks464. For example, the colors may represent an abandonment rate. In thiscase, a green color may indicate a low rate of abandonment associatedwith the block, yellow a moderate rate, and red a high rate. Other typesof conditions that may be displayed by the routing diagram 464 include,but are not limited to, a heat flow (e.g., total call volume, processingcapacity of a particular branch, agent availability, or agent capacity),average/maximum call time, average/maximum wait time, average speed ofanswer, average/maximum occupancy rate, performance, quality of service,and the like.

As described above, the conditions of the call center are associatedwith individual blocks (e.g. via the visual cues). Accordingly, acontact center worker may identify areas of the contact center that mayneed attention. For example, if the sales branch was simulated (ordetected in real-time) as having a high call abandonment rate, thecontact center worker may be alerted via the visual cues that therouting strategy associated with that branch may need attention (e.g.,need reconfiguration or additional agents assigned to the branch).According to one embodiment, the specialized application 52 identifieslikely causes of the displayed conditions through contact center models,statistical analyses, queue system theory, and the like (e.g., employingthe Erlang A, B, or C formulas).

According to one aspect of the present invention, the specializedapplication 52 may offer suggested solutions to the observed issues. Forexample, if a call abandonment rate in the sales branch is high, thesimulator may suggest associating an auxiliary agent group with thatbranch or that the calls be routed to voicemail sooner. In anotherexample, if the heat flow is red for a particular branch of the routingstrategy diagram due to an unusually high call volume to a particularagent group (e.g. agents trained to process new credit cardapplications), a recommendation may be made to a contact centeradministrator to add more agents to that particular agent group or tofocus agents to that particular agent group (e.g., remove agents who arein the particular agent group from other agent groups if the other agentgroups would not be adversely affected). These suggestions may be basedon best practices, historical data, contact center models, queue systemtheory, and the like, accessible to the specialized application foranalysis.

Additionally, the contact center worker may selectively observeadditional information regarding the call center. For example, as shownin FIG. 20, the contact center worker may hover a cursor over aparticular block 464 to display a tool-tip 466 which displays relevantinformation associated with the block 464 (bubble-up). Additionally, theparticular block 464 may be selected, to generate a new UI pageproviding detailed information associated with the particular block(drill-down).

Embodiments of the present invention apply to contact centers having onephone line and one routing strategy as well as contact centers havingmultiple phone lines and multiple routing strategies. FIG. 21 is ascreen shot of an exemplary UI page 480 rendered when a contact centerhas multiple lines and multiple routing strategies. According to oneembodiment, the contact center user may navigate among the routingstrategies of the various lines 484 by invoking a thumbnail view 482 ofthe various routing strategies.

Accordingly, one or more embodiments of the invention provide anintuitive experience for the contact center administrator, for example,by displaying the contact center routing logic as a birds-eye-view ofinteractions flowing through the contact center, to aid the contactcenter administrator with the (re)configuration and monitoring of thecontact center without the need of highly skilled IT personnel orextensive pre-acquired knowledge of best practices for call centeroperations or set up.

FIGS. 22-30 are screen shots of various example graphical user interfacescreens rendered by the specialized application 52 running on the thirdparty web platform 20 according to one embodiment of the invention. Aperson of skill in the art should recognize that the graphical userinterface may also be provided by the web server 40 in the remotecomputing environment 24 in instances where a tenant user accesses theweb server 40 directly without invoking the third party platform 20.According to one embodiment, the graphical user interface may be used torecommend routing strategies to contact centers according to, e.g.,industry best practices. The graphical user interface may also be usedfor guiding a contact center user step-by-step in configuring a routingstrategy according to the specific contact center's business needs. Inthis regard, when a contact center worker logs in and indicates thatcontact center setup is desired, the specialized application 52 rendersa UI page with various options for configuring the contact center. Suchoptions may include, for example, a user management option 102, skillsmanagement option 104, routing configuration option 106, and mediamanagement option 108.

FIG. 22 is a screen shot of a UI page 100 rendered upon selection of theuser management option 102. Selection of the user management optioncauses display of registered users 110 of the third party web portal.According to one embodiment, the users of the third party web portal maybe enabled as users or administrators of the specialized application 52.In one embodiment, the users correspond to agents 11 of a contactcenter. Furthermore, profile information of the registered users 110 ofthe third party web portal may be migrated into the specializedapplication 52 for editing such profile information to add data that isrelevant for a contact center setting. Editing the profile informationof a particular user starts by selecting the user from the list ofregistered users 110.

According to one embodiment, the third party web portal is a customerrelationship management portal for a particular business entity, and theusers thereof are sales or customer service representatives for theparticular business entity. The third party web portal may provide therepresentatives with customer profiles or account histories, or mayallow for tracking and managing a marketing campaign, customercommunications, or other information relevant to the particular businessentity's sales process. According to an aspect of embodiments of thepresent invention, data corresponding to the users of the third partyweb portal is easily integrated with the specialized application 52 sothat the user data may be used by the specialized application 52 withouthaving to reenter the user data.

FIG. 23 is a screen shot of a UI page 120 rendered upon selection of aparticular registered user according to one embodiment of the invention.Selection of the particular user causes the specialized application 52to retrieve the user's profile information from the third partydatabase. In addition to fields typically provided by the third partydatabase, the specialized application further renders profile optionsrelevant to contact centers that may be set for the user. Such profileoptions relate, without limitation, to the user's role 122, skills 124,and provisioned phone number for the user 116 (e.g. agent's phone numberfor routing calls). Setting the additional profile data for the user andselecting a save option 130 causes storing of the profile data in acontact center database managed by one of the database servers 48. Ifthe user is to be disabled as a user of the specialized application 52,a deactivate user option causes removal of such user from the contactcenter database. In this manner, the specialized application 52 allowsretrieval of profile information of users set up in the third partydatabase for adding additional profile information for those users andenabling such users in the specialized application.

FIG. 24 is a screen shot of a UI page 140 rendered upon selection ofmore than one of the registered users 110 according to one embodiment ofthe invention. Selection of multiple users causes the specializedapplication 52 to flag such users and display them in a separate window142. The separate window provides an edit option 144 with variousoperations (e.g. assign roles, phone numbers, skills, etc.) which, whenselected, causes the operation to be performed on the selected usersconcurrently. That is, the specialized application 52 may allow for bulkediting of registered users 110.

FIG. 25 is a screen shot of a UI page 150 rendered upon selection of therouting option 106 according to one embodiment of the invention.Selection of the routing option causes display of available queues thatmay be selected for defining or redefining a routing logic for thequeue. In this regard, a queue is an entry point to a contact center.All incoming end user 14 calls arrive at a queue. According to oneembodiment, a queue is identified by a queue name 152 and phone number154.

In one embodiment, a contact center may have one or more queuesassociated with it, where each queue is associated with a single phonenumber. For example, there may be several phone numbers that an endcustomer 14 may call to reach the contact center. Each phone number mayreach, for example, a different sub-unit of the contact center (e.g.credit card division, mortgage division, personal accounts division, andthe like) or a particular registered user 110. However, embodiments ofthe present invention are not limited thereto, for example each queuemay be associated with multiple phone numbers or multiple phone numbersmay be associated with one queue.

According to one embodiment, each queue is associated with a routingtemplate, which in turn is associated with a routing strategy/logic. Adrop down template box 156 allows an administrator to configure and/orreconfigure the routing strategy assigned to the queue. Upon userindication to edit or assign a routing template to a particular queue,the web server retrieves and displays a plurality of templates that anadministrator may pick and choose based on the business' needs.

FIG. 26 is a screen shot of a UI page 160 displaying a library ofdifferent routing templates 162 available for selection by anadministrator according to one embodiment of the invention. According toone embodiment, the routing templates that are initially displayed foruser selection may depend on the profile information of the contactcenter that is to be configured with the desired business logic. Forexample, routing templates may be organized in the mass storage devicemanaged by the database servers 48 according to various industryverticals (e.g. finance, retail, medical, etc.) and the types oftemplates displayed to the user may depend on the industry verticalidentified in the contact center's profile information. Routingtemplates may also be categorized according to other criteria, such as,for example, contact center size. Other categories and sub-categoriesthat may be used to organize and recommend routing templates will beevident to a person of skill in the art.

According to one embodiment, routing templates also vary by complexity.A user may select a particular level of complexity desired (e.g. via acomplexity slider), and depending on the level selected, a differenttemplate may be selected. For example, a general template may triggerone or more sub-templates that provide added routing complexity.Alternatively, different parameters within a single template may beenabled or disabled based on the level of complexity that is selected.

In the example depicted in FIG. 26, different templates with differentrouting complexities are displayed selection by a user. For example, thetemplate with least complexity is template 162 a where a call is routedto any available agent after playing a user-configured greeting,followed by templates 162 b thru 162 e.

In more detail, template 162 b routes a call to a user-specified agentor skill group after playing a user-configured greeting. Template 162 cplays a user-configured greeting and then checks user-configuredholidays, working days, working hours, and the like, prior to routing acall to any available agent. Template 162 d plays a user-configuredgreeting and then checks user-configured holidays, working days, workinghours, and the like, prior to routing a call to a user-specified agentor skill group. Template 162 e plays a user-configured greeting, plays auser-configured offer menu, and routes calls based on the offer menuchoice. Template 162 f plays a user-configured greeting, checksuser-configured holidays, working days, working hours, and the like,prior to playing an offer menu, and routes calls based on the offer menuchoice. Additionally, in the templates where holidays, working days,working hours, and the like are checked, an after-hours message or aholiday message may be played prior to routing to voicemail. A person ofskill in the art should recognize that the above-described templates areexample templates, and other templates having different routingstrategies may also be used without departing from the scope and spiritof the invention. For example, a template may include a cascaded menuoption, i.e., where calls are routed to another offer menu based on acurrent offer menu choice.

According to one embodiment, a routing template is parameterized. Inthis regard, a routing template uses values of parameters to accomplisha specific action. For example, when an initial voice treatment isplayed to an end customer, the actual URI (Uniform Resource Identifier)of the media file is a value of one of the parameters of the template.As another example, when an interaction is routed to an agent having aparticular skill, the actual skill name is a value of another parameterof the template.

Routing templates are generic. The same routing template may be used byany of various contact centers hosted by the remote computingenvironment. Because routing templates use parameters, differentcustomers using the same routing template can specify different valuesfor the parameters, customizing how their interactions are processed.Exemplary parameters relate to a greeting to be played when a call isfirst received, a destination to which to route the call, a type ofmusic to be played while the call is routed to the destination, type ofmenu options to be provided to a caller; working hours and holidays tobe checked prior to playing a particular message, any other routingaction to be performed, and the like.

According to one embodiment of the invention, a routing templateincludes the following properties:

-   -   id;    -   name;    -   description;    -   routingStrategy—SCXML (State Chart Extensible Markup Language)        strategy;    -   templateSchema—a schema (also referred to as metadata)        describing what parameters this template uses and defines        additional information about parameters (e.g. type). It is also        used to generate the appropriate UI so users can conveniently        specify values of routing parameters during the contact center's        configuration process.

The metadata for a particular routing template defines parametersincluding names to be displayed in the graphical user interface forprompting input of a user value for the corresponding parameters, typesof user input values expected for the corresponding parameters, range ofvalues expected for the corresponding parameters, and the like.According to one embodiment, a parameter object has the followingproperties:

-   -   displayName—parameter name to be displayed in the UI;    -   description—brief description of the parameter;    -   type—parameter type, must be one of the types specified (e.g. a        “timezone” type to describe a time zone of the contact center; a        “holiday” type to describe holiday dates; a “weekdays” type to        describe weekday sequences; a “working hours” type to specify        working hours; a “media resource” type to describe audio, video,        etc. to be used in the routing process; a “destination” type to        describe a routing destination (e.g. skill, agent, etc.); and a        “select action menu” type that describes an action to be        performed by the routing strategy);    -   multiple—a Boolean value describing if this parameter is an        array or not; “true” means that this parameter can hold several        objects of the specified type.

According to one embodiment, metadata for a particular routing templatemay also define an element referred to as “block” which is a logicalgrouping element for a set of parameters which have something in common.Blocks may also form a tree-like structure by having a number of childblocks. Thus, metadata for a particular routing template may bedescribed as an array of blocks. According to on embodiment, the blocksdefined by the metadata may be the blocks 264 of the routing strategydiagram 262 described above in relation, for example, to FIG. 15.

According to one embodiment, each block has the following JSON(JavaScript Object Notation) representation:

-   -   block—name of this block;    -   type—block type, can be one of the following: “simple”,        “condition”, “menu”, “menuItem”;    -   displayName—block name to be displayed in the UI;    -   description—brief description;    -   params—an object containing a set of user-configurable        parameters to be displayed in this block; shall be in the        following format: {<parameter1_name>: <parameter1_spec>,        <parameter2_name>: <parameter2_spec>, . . . };    -   blocks—an array of child blocks (optional).

FIG. 27 is a screen shot of a UI page 165 displaying parameters for aselected routing template 162 a based on the associated metadataaccording to one embodiment of the invention. A person of skill in theart will understand that the UI in FIG. 27 may be replaced with the UIdescribed above with respect to, for example, FIG. 15. That is, the setof parameters that are to be configured could be represented as blocks264 of a routing strategy diagram 262. In this regard, the parameterswould be linked and displayed in the routing strategy diagram so that ittracks the actual flow of an interaction to be handled by the routingstrategy.

The set of parameters that are displayed may depend from thefunctionality that the template provides. In the illustrated example,the parameters include a play greeting parameter 168 and a route callparameter 170. In response to the displayed parameters, the contactcenter administrator selects a pre-recorded greeting message to beplayed when an interaction is initially answered, and music to be playedwhile the interaction is waiting to be routed to an available agent.

The parameters in the UI page 165 of FIG. 27 are rendered based on thefollowing metadata:

 [{  “block”: “greeting”,  “type”: “simple”,  “displayName”: “Playgreeting”,  “description”: “Play greeting”,  “params”: { “greetingMessage”: {   “displayName”: “Greeting message”,  “description”: “Select greeting message”,   “type”: “media”,  “multiple”: false  }  } },{  “block”: “routing”,  “type”: “simple”, “displayName”: “Route call”,  “description”: “Route call to anyavailable agent”,  “params”: {  “musicWhileWaiting”: {  “displayName”:“Music while waiting”,  “description”: “Select music while waiting”, “type”: “media”,  “multiple”: false  }  } }]

The values of the parameters that are stored based on inputs provided inresponse to the parameters displayed in FIG. 27 may be as follows:

routingParams = {  “greetingMessage”: {  “id”: “f3ab8s-484556”, “displayName”: “Greeting Message”,  “uri”:“system/media-resources/f3ab8s-484556”,  “mediaUri”:“system/media-resources/f3ab8s-484556.wav”  },  “musicWhileWaiting”: { “id”: “f3ab8s-484556”,  “displayName”: “Music While Waiting”,  “uri”:“system/media-resources/f3ab8s-484556”,  “mediaUri”:“system/media-resources/f3ab8s-484556.wav”

As described above, the UI page 165 displays the parameters that relateto the specific template selected. Accordingly, and depending on thetemplate selected, the user may be prompted to enter working holidays,working days, working hours, and the like, select an action to take whenoutside working times, enter a particular agent or skill group to routeto, select a voice prompt to play at a specific step of processing acall, specify an action to take when a particular digit is entered fromthe user's telephone device, or enter any other parameter valueassociated with a routing operation of a template.

According to one embodiment, the user may specify another virtual queueto route to, for example, in response to a selection of a menu item.Here the other virtual queue may relate to another template (e.g.,another template type), another department of the business entity,another phone number, and the like.

FIG. 28 is a screen shot of a UI page 180 displaying a library ofdifferent skill groups 182 available for association with registeredusers 110 and routing strategies according to one embodiment of theinvention. The administrator may create skill groups 182 by selectingthe add option 184. When creating skill groups 182, the specializedapplication 52 may prompt for a skill name and skill description.According to one embodiment, after a skill group 182 is saved in theskill group library, the administrator may assign particular registeredusers 110 (e.g., agents 11) to the skill group 182 by entering the skillname in the skill field 124 of the particular registered user's profile,and the administrator may enter the skill group 182 in the parameterfield for routing to a particular skill group 182 when configuring therouting strategy.

FIG. 29 is a screen shot of a UI page 185 displaying a library ofdifferent media files 186 available for selection when configuring theparameters of the selected routing strategy according to one embodimentof the invention. The media files 186 may be provided by or stored atthe media server 46. According to one embodiment, the administrator mayadd new media files by selecting the add option 188. Newly added mediafiles may be stored at the media server 46 for subsequent selection fromthe media file library. The administrator may preview the media files byclicking a play icon associated with the media file 186.

According to an aspect of one or more embodiments of the presentinvention, an administrator of a contact center can configure a contactcenter by enabling registered users of a third party web portal asagents of the contact center, assigning the enabled registered users toskill groups, associating phone number(s) with the enabled registeredusers and the contact center, and configuring a routing strategy fromone of the available routing strategy templates. After configuring thecontact center, the contact center may be instantiated in a remotecomputing environment to receive and handle contact interactions (e.g.,calls).

FIG. 30 is a screen shot of an exemplary UI page 190 displaying adashboard 192 for an administrator to monitor activity of an operatingcontact center. According to one embodiment, the dashboard is generatedby the specialized application 52. The dashboard may include real-timeand historical data associated with a particular contact center.Additionally, the dashboard may include data from the third party webportal. The dashboard may present the contact center data usingconfigurable charts and graphs, such that the administrator may readilyand easily understand the status of the contact center. Informationdisplayed on the dashboard may include, but is not limited to, number ofusers logged in, a historical login record, call activity, callduration, call time, hold time, and sales information.

FIG. 31 is a signaling flow diagram illustrating a processing sequencefor configuring a routing logic for a contact center, and for routing aninbound call based on the configured routing logic according to oneembodiment of the invention.

In order to configure a routing logic for a contact center, a contactcenter user utilizes a UI 180 displayed on the user's web browser 51(FIG. 2) to request a list of routing templates to a web application 182running on the web server 40. According to one embodiment, the UI isprovided by the specialized software 52 (FIG. 2) running on the thirdparty web platform 20. The web application 182 in turn submits therequest to a mass storage device 184 managed by the correspondingdatabase server 48 (FIG. 1). The retrieved list of routing templates areprovided for display to the UI 180. The UI receives user selection of aparticular routing template along with identification of a queue/routingpoint to which the routing template should be assigned. The assignmentof the selected routing template to the routing point is stored in themass storage device 184.

The UI 180 further transmits a request to retrieve parameters from theassociated metadata file. In response, the web application 182 retrievesthe associated metadata file and generates a display based on theparameters specified in the file. The contact center user assigns thedesired values for the displayed parameters and submits them to the webapplication 182 which is turn stores the values in the mass storagedevice 184. According to one embodiment, the values of the parametersmay be links for accessing media or other objects assigned to theparameters.

Once the parameters for the selected routing template are specified, allincoming calls to the associated queue are processed according to thecorresponding routing strategy.

A call routing processing sequence begins with the call coming in to arouting point (e.g. a queue associated with a telephone number). The SIPserver 44 receives the call and distributes a call event to theorchestration server 42 which queries the web application 182 toretrieve the routing template strategy specified for the queue. TheSCXML code for implementing the routing strategy is retrieved from themass storage device 184 and forwarded to the web application 182. Theweb application 182 transmits a request to the orchestration server 42to execute the routing strategy via the SCXML code. According to oneembodiment, the SCXML code that implements the routing strategy includesan initial action that is invoked by the orchestration server 42 toobtain actual values of the routing template parameters. The executingof the initial action causes a request to be transmitted to the webapplication 182 to fetch the values of the parameters that have beenstored for the particular queue. The parameter values are returned tothe orchestration server 42. The orchestration server then executes therouting strategy using the retrieved parameter values. This may includefor example, playing a specific voice prompt. The voice prompt may beretrieved via a URL specified for a corresponding parameter. A specificagent from an agent group may also be selected based on correspondingparameter values. Once the agent is selected, a request is transmittedto the SIP server 44 to route the call to the selected agent.

According to one embodiment of the invention, the use of templates orother graphical user interfaces for recommending routing strategiesaccording to industry best practices, and for guiding a userstep-by-step in configuring a routing strategy according to the specificcontact center's business needs are extended to other configurationactivities performed during an initial deployment of a contact center,as well as after the contact center has been deployed. For example, whena new contact center is to be deployed initially, a contact center usermay select from various predefined configuration templates for beingguided through the configuration process. The configuration templatesmay be organized in the mass storage device managed by the databaseservers 48 according to various industry verticals (e.g. finance,retail, medical, etc.). The configuration templates may also becategorized according to other criteria, such as, for example, contactcenter size. Other categories and sub-categories that may be used toorganize and/or recommend the configuration templates will be evident toa person of skill in the art.

According to one embodiment, the configuration templates includeparameters that are included for configuring a contact center accordingto the relevant industry's best practices. For example, a best practicefor a contact center in the finance industry may be to have two 800numbers for reaching the contact center. The template classified underthe finance category may thus prompt the contact center user to pick two800 numbers for the contact center for storing as values for thecorresponding parameters. In another example, a best industry practicefor a contact center that is identified to reside in California may beto set up both English and Spanish skills for its agents. In yet anotherexample, a best industry practice for a contact center in the financeindustry may be to have a separate queue for banking, a separate queuefor mortgage, and the like. The contact center user may thus be promptedto input information (e.g. telephone numbers) to be associated with eachof the recommended queues.

According to one embodiment, certain customization may be allowed to thecontact center user beyond what is recommended via the configuration (orrouting) templates. For example, if the template prompts for particularpre-defined queues, but the contact center desires to set up a queuethat is not defined by the template, the template is flexible enough toallow the user to enter such a customized queue. For example, thetemplate may include an “enter other queue” parameter which the user mayselect to provide a queue name, number, and the like.

According to one embodiment, the selected configuration template andassociated values are stored in the mass storage device managed by thedatabase servers 48 and provided to the configuration server 41 forautomatic deployment of the contact center. In deploying a contactcenter, the configuration server instantiates a virtual machine for thecontact center 41 in the remote computing environment and allocatesresources (e.g. computing infrastructure) to the virtual machinecommensurate to contact center needs as identified via the configurationparameters. If the contact center's needs change, and more or lessresources are required, the configuration server 41 dynamicallyinstantiates a new virtual machine, at runtime, according to themodified needs, migrates contact center data from the first virtualmachine to the new virtual machine, and makes all other necessaryupdates to ensure that calls are routed to the new virtual machine.

In addition to automatically allocating physical resources during theconfiguration process, the configuration server 41 further automaticallyconfigures the relevant servers (e.g. SIP, media, etc.) and takes otheractions deduced as being necessary based on the parameters explicitlyidentified. For example, if a contact center in the finance industry hasa credit card queue enabled, special security features may automaticallybe set up in handling calls directed to this queue.

Providing Dynamic Elasticity of Contact Center Resources

Embodiments of the present invention are also directed to a system andmethod for monitoring operation of a contact center for providing realtime elasticity of contact center resources based on the monitoring. Theresources may be, for example, hardware components, softwareapplications, contact center services, and the like. The resources aredescribed as being elastic because the resources may scale up and downbased on detected conditions or needs of the contact center. The scalingmay be linear for some resources and non-linear for others.

The system is also elastic in the sense that resources may be switchedfrom one resource of one type to another resource of the same type, orfrom one resource of one type to another resource of a different type(e.g. replace an email server with a SIP server). Economy of scale mayalso be considered in adjusting resources in a multi-tenant environment.For example, resources may be re-allocated amongst the various tenantsinstead of being physically added or removed.

According to one embodiment, the resources of a contact center tenantare hosted in a remote computing environment, such as, for example, theremote computing environment 24 of FIG. 1. The resources are maintainedby a contact center service provider who provides contact centerservices on behalf of the contact center tenant as software as a service(SaaS). Tenants may pay for the provision of the contact center servicebased on, for example, the amount of resources that the tenant wantsallocated for servicing its customers. A tenant may pre-provisionresources sufficient to handle peak capacity of interactions (e.g. voicecall, emails, chat session, etc.). For example, the tenant maypre-provision 50% more hardware and software resources than what wouldbe needed under normal traffic conditions. However, even such buffer maybe insufficient to handle critical peaks (e.g. in the event of a naturaldisaster) or seasonal loads (e.g. Black Friday for retailers). Also,depending on the type of contract between the SaaS provider and thetenant, the pre-provisioning may mean that the tenant is paying for thepre-provisioned resources even if such resources are not actually used.

According to embodiments of the present invention, instead of tenantspre-provisioning resources in anticipation of, for example, increasedinteractive volume (e.g. increased voice calls, emails, social mediamessages, etc.), tenants may purchase core resources for handling coreneeds of its customers, and based on monitoring of traffic, resources,historical data, trends, and the like (collectively referred to ascontact center operation data), adjustments may be made to dynamicallyincrease resources and services offered by the tenant to adjust toincreased service and traffic demand when such increased demand isdetected or predicted. When the added resources or services are nolonger needed, adjustments are made to dynamically decrease resourcesby, for example, shutting down unnecessary resources and services,switching to less powerful resources, or the like. In this manner, thetenant is charged for those resources that have been activated on behalfof the tenant, but not for resources that are inactive, resulting insavings to the tenant's operational cost. Furthermore, the real-timeelasticity provided by embodiments of the present invention allowstenants to adjust to even unexpected situations by scaling up or downits resources as much or as little as needed.

With respect to the SaaS service provider, resources that have beendeactivated for a particular contact center tenant may be reallocated toanother contact center tenant so as to not have a resource running idle.If a particular resource is not used by any tenant, the resource may beremoved in order to decrease or eliminate costs associated with havingsuch a resource in idle state.

In regards to a computing device running in idle state, there is savingswhen compared to a computing device on which applications are runningactive. However, such savings may only be partial since there is stillpower consumption, cooling, network usage, maintenance personnel, andthe like. The partial savings may be preferred over shutting down thecomputing device given the higher effort in restarting the device.Partial savings may be enhanced by leveraging dedicated hardwaresolutions such as intelligent power supplies or power saving modes (e.g.switching off graphics, etc. if applicable).

FIG. 32 is a block diagram of various virtual machine (VM) instances 500a, 500 b, and 500 c (collectively referred to with reference number 500)running on hardware infrastructure 499 provided on a remote computingenvironment, such as, for example, the remote computing environment 24of FIG. 1, according to one embodiment of the invention. Each virtualmachine instance 500 may be similar to the virtual machine 54 of FIG. 2.Multiple virtual machines may run on one or more physical computers.Each virtual machine may have the same or different mix of applications.Also, although not depicted, a virtualization layer may run on top ofthe physical computer.

According to one embodiment, each virtual machine 500 is asoftware-based computer running on the host physical machine 499 andproviding particular contact center services on behalf of one or morecontact center tenants. The virtual machines 500 may share the sameoperating system. In other embodiments, different operating system maybe run on each virtual machine instance. According to one embodiment, a“hypervisor” type of virtualization is implemented where multiplevirtual machines run on the same host physical machine, each acting asif it has its own dedicated box. Of course, the virtual machines 500 ofFIG. 32 may also run on different host physical machines.

Exemplary virtual machines include but are not limited to a voice VM 500a, multimedia VM 500 b, management VM 500 c, and the like. One or morecontact center applications (referred to as servers) may run within eachVM. For example, the voice VM 500 a hosts applications/servers forhandling voice calls including, for example, a SIP server 502,statistics server 504, routing server 506, load balancer 508, andconfiguration server 510.

The SIP server 502 may be similar to the SIP server 44 of FIG. 1, andmay be configured to set-up and tear down calls between SIP devices andcontrol call routing. The statistics server 504 may be similar to thestatics server 50 of FIG. 1, and may be configured to include real timedata on call statistics, agent statistics, and the like. The routingserver 506 may be similar to the orchestration server 42 of FIG. 1, andmay be configured to execute a routing strategy for a particular routepoint (e.g. a directory number) configured on the routing server. Theload balancer 508 may be coupled to the SIP server 502 and to variousinstances of the routing server 506 and may be configured to handle loaddistribution of calls to be handled by the routing servers. In otherembodiments, the load distribution functionality may be provided by, forexample, the SIP server 502, in which case a separate load balancer 508may not be necessary.

The configuration server 510 may be similar to the configuration server41 of FIG. 1, and may include a configuration engine for configuring orreconfiguring the resources of a contact center. For example, theconfiguration server 41 may be invoked to pre-configure an instance of aSIP server by describing attributes of the SIP server. Oncepre-configured, the instance may be activated upon detecting a need foranother SIP server.

As another example of a specific virtual machine, the multimedia VM 500b includes one or more instances of a media server 516, an interactionserver 518, a classification server 520, and a universal contact server522. The media server 516 may be, for example, an email server, chatserver, social media server, and/or the like, configured to processdifferent types of multimedia interactions and/or interact withdifferent media platforms such as, for example, social media platforms.The multimedia interactions may include, for example, email, vmail(voice mail through email), chat, video, text-messaging, web, socialmedia messages, screen-sharing interactions, and the like.

The media server 516 is configured to generate an interaction for theinteraction server 518. According to one embodiment, the interactionserver 518 acts as a central hub for managing and processing theinteractions. The classification server 520 is configured to prioritizethe interactions for delivery to contact center workers. The universalcontact server 522 is configured to maintain and provide customercontact profiles, including customer contact information (e.g. names,addresses, phone numbers, etc.), contact history (previous interactionswith the contact center), and other data used in processinginteractions, such as standard responses and screening rules.

As a person of skill in the art should appreciate, a particular serverrunning on a particular VM may be moved to a different VM, or a new VMmay be instantiated for running the particular server. Other exemplaryVMs include, for example, a workforce management VM, voiceplatform/recording VM, and the like.

According to one embodiment, a management VM 500 c is provided withvarious servers for providing elasticity management of contact centerresources according to one embodiment of the invention. The managementVM 500 c may be dedicated to a single contact center tenant or sharedamongst various contact center tenants. According to one embodiment aseparate management VM may also be instantiated for providing differenttypes of management with dedicated solutions. For example, a managementVM may be separately provided for management of the VM infrastructure(via e.g. VMWare Studio), and another management VM may be separatelyprovided for managing the various contact center processes.

The servers running on the management VM 500 c may include, for example,a monitoring server 526, elasticity server 528, health monitor 530,migration server 532, and the like. The monitoring server 526 may beconfigured to monitor and collect contact center operation data. Thetype of data that is monitored and collected may depend on the resourcelayer that is subject to monitoring, such as, for example, a hardwarelayer, a platform/software layer, an operational/business layer, and thelike. According to one embodiment, monitoring parameters may beconfigured by the contact center tenant for each resource layer. Suchparameters may be configured via templates or GUIs described above withrespect to other embodiments. The monitoring parameters may identify,for example, the resources that are to be monitored for that layer, thetype of information that is to be collected, how often the informationis to be gathered, how often collected information is to be output, andthe like.

For example, the monitoring parameters for the hardware layer mayconfigured so that the monitoring server 526 monitors usage of differenthardware resources, such as, for example, CPU load, memory usage, numberof VM machines using the hardware resources, and the like. Themonitoring parameters for the platform/software layer may be configuredto that the monitoring server 526 monitors the load of each serverinstance that is running on each virtual machine, such as, for example,the load of the SIP server 502, statistics server 504, routing server506, interaction server 518, media server 516, classification server520, and the like. The monitoring parameters for theoperational/business layer may be configured so that the monitoringserver 526 monitors the type of interaction channels that are enabled,traffic on each interaction channel, the type of features/services thatare enabled (e.g. inbound calls, outbound campaigns, etc.), averagehandle time, routing strategies, and the like. Interactions are meant torefer to all voice and multimedia interactions between customers and acontact center resource, such as, for example, traditional PSTN calls,VoIP calls, emails, vmails (voice mail through email), chat sessions,video sessions, text-messaging (SMS) sessions, web interactions, socialmedia interactions, screen-sharing interactions, and the like.

Granularity of the monitoring may be adjusted by the contact centeradministrator by adjusting configuration settings of the monitoringserver 526. For example, instead of monitoring all interaction volumefor a particular media channel, the interaction volume may be monitoredat a more granular level. For example, the monitoring server 526 may beconfigured to monitor interaction volume relating to a specific product,service, or the like. The monitoring may also be configured to be on anhour by hour basis, or minute by minute basis.

There are other types of data that may be monitored by the monitoringserver 526, and some may even relate to non-contact center events whichmay nonetheless affect demand of contact center resources such as, forexample, weather conditions, stock market performance, special events(e.g. elections, Super Bowl, holidays, etc.), and the like.

The elasticity server 528 is configured with instructions for processingthe data monitored by the monitoring server 526 and providing an outputthat results, in some instances, dynamic adjustment of contact centerresources according to one embodiment of the invention. The actualadjustment of resources may be performed by the migration server 532based on the adjustment parameters provided by the health monitor.

According to one embodiment, the elasticity server 528 is configured torun an elasticity function that takes input parameters from themonitoring server 526 and generates output parameters in response. Theelasticity server 528 may be configured with multiple elasticityfunctions, such as, for example, a different elasticity function foreach resource layer or resource type.

According to one embodiment, the elasticity function is triggered inresponse to satisfying certain conditions. For example, thresholds maybe defined for the different monitoring layers. The elasticity processor528 may be configured to determine whether a threshold value at one ormore layers have been met before triggering the elasticity function andgenerating adjustment parameters. The thresholds may define boundariesof acceptable variations of contact center operation. The thresholds mayalso define an acceptable maximum duration for exceeding thoseboundaries, after which the elasticity function is invoked. In thismanner, short term periods in which those boundaries are exceeded may betolerated.

The elasticity function may be triggered based on analysis of otherinputs including, for example, historic operations data as stored in amass storage device 534. The mass storage device may be managed, forexample, by a database in the set of database servers 48 of FIG. 2. Inthis regard, even if the current operation data provided by themonitoring server 526 does not by itself trigger an adjustment,adjustment may be recommended or proactively invoked in response topredictions based on the historic data. For example, historic dataretrieved by the monitoring server 526 or elasticity processor 528 mayindicate that inbound calls and web orders for a contact center tenantrunning a flower shop will be ten times heavier on Valentine's Day thanon other days. In response to such data, the elasticity server 528 maybe configured to proactively notify the tenant that additional resources(e.g. an additional instance of the SIP server 502 and/or routing server506 to handle the voice calls, and an additional instance of theinteraction server 518 and/or media server 516 to handle the web orders)are recommended. In response, the tenant administrator may invoke theconfiguration server 510 to configure a new instance of the recommendedresource assuming that such resources have not already beenpre-configured and put on standby mode. The configuration may be donevia templates and/or GUIs as described above. The administrator maymanually activate the new resources on Valentine's Day and manually shutthem down after Valentine's Day. The activation/deactivation may also beautomatic. For example, the administrator may pre-schedule into themigration server 532 the dates in which the new resources are to beactivated and deactivated. Upon arrival of the pre-scheduled date, themigration server may automatically activate the new instance of theidentified resources. When the date passes, the migration server may beconfigured to return to the original deployment prior to instantiatingthe new resources.

Additional considerations in triggering the elasticity function mayrelate to trend forecasting. According to one embodiment, the elasticityserver 528 may be configured to forecast a trend based on a currentsituation. If the probability of accuracy of the trend forecasting isabove a threshold level, the elasticity server 528 invokes theelasticity function to output adjustment parameters based on theprediction. In one embodiment, the adjustment is not recommended norinitiated if confidence of the forecast is below the threshold level.Such trend forecasting may employ calculations using an Erlang formulaas will be understood by a person of skill in the art.

Trend forecasting may be reactive (short-term reaction) or proactive(mid/long-term reaction). For example, for reactive forecasting, thesystem may be dimensioned for engineered capacity A (measured viatraffic, CPU load, memory consumption, I/O traffic, the like). A rulesbased criteria may exist that indicates when safety capacity B (asdefined by A+a) is exceeded (e.g. CPU above threshold for 1 minute). Inthis case, a reaction may be triggered, such as, for example, creatingan additional VM instance with respective services/applications, andincorporating it into the contact center operation. The new VM can beeither the same or on a different computer. According to one embodiment,multiple capacity thresholds may be configured with different reactions.When load decreases, the reverse of the above process may be executed.Also, corresponding logic may be applied when underload situations areencountered for reducing resource use.

According to one example, for proactive forecasting, the system mayoperate with planned capacity schedule (e.g. based on history). Aplanned capacity profile may include information on expected load curve.If the actual (measured) load curve deviates from the predicted one, thecapacity schedule may be adjusted, even if the system does not yetexperience actual over-/under-load. For example, the system may beconfigured to refine prediction for the rest of the day based on firsthour operation by comparing actual with forecasted load.

The elasticity function, once invoked, may output adjustment parametersfor dynamically adjusting the resources of the contact center at runtime. The adjustment parameters may relate to a single monitored layerthat is affected (e.g. hardware layer), or relate to multiple layers(e.g. hardware and platform/software layer). For example, in response toinput from the monitoring server 526 that the CPU load is 70%, thevirtual machine 500 running on the current CPU may be moved to a morepowerful CPU. In another example, in response to input from themonitoring server 526 that all agents with skills to respond to incomingemails are logged out, email capability/services may be removed for theparticular tenant. This may include, for example, removing the emailportion of the media server 518 from the multimedia VM 500 b, unloadingemail routing rules, disabling email handling capability for agents,removing email from reports, and the like. In yet another example, ifthe contact center tenant hires new agents, a new SIP server 502 mayhave to be launched and new directory numbers for the new agents mayhave to be added in order to accommodate the new hires.

According to one embodiment, computation of the adjustment outputparameters may be done in real-time or selected from a look up tablestoring pre-calculated adjustment parameters. If a lookup table isutilized, off-line simulations may be performed based on, for example,historical data, and adjustment parameters generated from suchsimulations may be stored in the lookup table along with metadata. Themetadata may define input conditions that may trigger adjustmentutilizing those parameters.

Whether the calculation of the adjustment output parameters is in realtime or not, the elasticity function may be configured to select thoseparameters that relate to an optimal adjustment strategy for the contactcenter tenant. For example, one adjustment strategy in light ofincreased voice traffic may be to instantiate a new SIP server 502. Theoutput parameters for such strategy may state which resource toinstantiate (e.g. SIP server), how much of that resource to instantiate(e.g. one additional), on which place (physical server, OS, VM) tocreate the new SIP server, and the like. If other resources are also tobe added to handle the increased voice traffic, the output parametersmay relate to those other resources. In determining which place tocreate the new server, the elasticity function may take into account thefree capacity on the given place and comparing the free capacity withpredicted capacity consumption of the new SIP server.

Instead of adding a new SIP server to handle the increased voicetraffic, however, another strategy that achieves same or similar resultsmay be to move the voice VM 500 a to a more powerful machine.

In determining which of various possible adjustment strategies toselect, the elasticity function may be configured to take into accountthe conditions, constraints, and/or objectives defined for the contactcenter tenant. These factors may also be taken into account even after aparticular adjustment strategy has been selected to determine, forexample, whether the adjustment makes sense in light of risks/penaltiesof performing the adjustment, or health of the deployment state that isexpected as a result of the adjustment.

The conditions, constraints, and/or objectives of an adjustment may beranked by the contact center tenant in terms of importance. For example,if the tenant would rather pay more in resource usage rather than optfor a solution that may have negative impact on service, the functionmay be configured to select a strategy that minimizes negative impact onservice. The tenant may also prefer to maintain a current mix ofservices (e.g. 10% of resources are dedicated to email, 70% of resourcesare dedicated to voice, 20% of resources are dedicated to other media)instead of increasing or decreasing only a certain service utilizingonly a certain media channel. In this case, the function may select anadjustment strategy that scales proportionally/linearly across allservices even though an equally viable strategy may exist which providesnon-linear scaling by only increases/decreases resources for the servicein high/low demand.

In another example, the elasticity function may be configured toconsider cost/expense of making the adjustment, time constraints inactivating/deactivating resources, level of required service continuity,and the like, in selecting the adjustment strategy. The cost may beoperational expenses for additional or more powerful infrastructure use.Other expenses to consider may be service related penalty due to theadjustment. For example, there may be a slight delay in activating a newresource, potentially resulting in abandonment, data loss, or the like.In the event that a new routing server 506 is added and an active callhandled by a current routing server is handed off to the new routingserver, there may be service delay due to the routing strategy having tobe re-executed by the new routing server from the beginning. Predictedhealth of the new state of the contact center upon adjustment may alsobe considered in selecting the adjustment strategy.

According to one embodiment, the elasticity function is configured toutilize economy of scale for shared multi-tenant environments so that,instead of adding or deleting resources, resources are reallocated fromone contact center tenant to another. Generally speaking, the increaseand shrinkage of demand for contact center resources are notsynchronized across contact center tenants. That is, one contact centertenant may experience a peak in incoming traffic at certain times, whileanother contact center tenant will experience low traffic at thosetimes. Thus one contact center tenant may have low utilization ofresources such as the SIP server 502 or interaction server 518, whileanother contact center tenant may be in need of increase of suchresources. According to one embodiment, the elasticity function isconfigured to re-allocate resources from one tenant to another insteadof creating additional instances of the resources for the contact centertenant that is in need of such increased resources. If such a strategyis chosen, the output of the elasticity function includes parameters forde-allocating resources for one tenant and allocating the same resourcesto a different tenant.

The reallocating of resources may be implemented as follows according toone embodiment of the invention. In case of full tenant separation whereeach tenant has its own full environment (e.g. its own voice VM,multimedia VM, etc.) including configuration and managementcapabilities, the migration server 532 may be configured to:

a) extract configuration for a given resource in the first tenantenvironment;

b) import the configuration into the second tenant's configuration (withadjusting connections between servers, but keeping most options thesame, e.g. association with physical hosts);

c) shut down resources in the first tenant environment; and

d) start resources in the second tenant environment.

If tenants have a shared configuration environment, certain resourcesfor entities in the shared environment may be moved from one tenant toanother, such as routing points on switches or SIP Servers. For example,the DNs managed by the SIP server may be adjusted so that DNs of thefirst tenant are replaced with DNs for the second tenant.

A multi-tenant contact center environment creates additionalconsiderations that the elasticity function may consider in selectingthe optimal adjustment strategy and generating associated outputparameters. One consideration is a “noisy neighbor” effect. According toone embodiment, the elasticity function is configured to select anadjustment strategy that is configured to avoid/limit impact on othertenants sharing the same hardware or software infrastructure. Forexample, two tenants may share the same server instance when the firsttenant experiences a peak in interaction volume that slows downprocessing of interactions for not only the first tenant, but also thesecond tenant. In this situation, the elasticity function may outputadjustment parameters that affect the first tenant, the second tenant,or both. For example, the elasticity function may output that the secondtenant be given its own server executable, maybe on a less powerfulmachine but enough to handle its own traffic. The first tenant mayremain in the first, more powerful machine which is now able to handlethe increased traffic.

According to one embodiment, the migration server 532 may be configuredto migrate the contact center from a current deployment state to atarget deployment state that satisfies the adjustment output parametersof the selected adjustment strategy. In this regard, the migrationserver 532 may be configured to consult an archive of states/deploymentsin order to select, based on metadata defining parameters of the variousdeployments, a deployment state close to what is needed based on theselected adjustment strategy and output parameters. The deploymentarchive may be hosted for example, in the mass storage device 534, andmay relate to a single contact center tenant or to multiplecontact-center tenants. The archived states may be those that have beentried already and have proven to be healthy for the particular verticalindustry or contact center type to which the current contact centertenant belongs, as is discussed in further detail below with respect tothe health monitor 530. If the conversion process from a current stateto the new state is also archived due to the same migration having beencarried out in the past, the migration server 532 may be configured tosimply retrieve and apply the archived conversion process forautomatically effectuating the migration to the new state. The migrationserver 532 may also be configured with different scripts for automatingthe adjustment of contact center resources. If the new migrated stateproves to be unhealthy, the migration server 532 may be configured torevert to the state prior to the migration. In this regard, themigration server maintains a history of deployments in order to revertto a prior deployment state if needed.

If the migration procedure from an original state to a target state isnot archived and no script exists for automating the process, then themigration may be manually executed by a contact center administrator inresponse to prompts. As the administrator takes steps to effectuate theadjustment, those steps may be recorded by the migration server andstored in the archive for later use in automating the migration for thesame contact center tenant or other contact center tenants.

With reference again to FIG. 32, the health monitor 530 running on themanagement VM 500 c is configured to monitor the health of currentdeployments and maintain information of the deployments in thedeployment archive for later use. The health of a particular deploymentmay depend on the health of different aspects of contact centeroperation which may include, for example, those aspects monitored by themonitoring server 526. For example, the health monitor may be configuredto monitor service levels, agents' occupancy, call abandonment, customersatisfaction, and the like. In fact, the data collected by themonitoring server 526 may be provided to the health monitor 530 to makedeterminations on the health of contact center operation. Different keyperformance indicators (KPIs) maintained for the contact center may beused to judge the health of the different aspects of the contact centerto ultimately determine the health of the current deployment. If allKPIs for the current deployment are within acceptable boundaries, thedeployment may be deemed to be healthy.

Based on the monitoring of the health of a particular deployment/state,the health monitor may be configured to generate or update metadatarelating to the state. For example, if the particular deployment isdeemed to be healthy, the health monitor may be configured to storemetadata that indicates, for example, that the particular deployment isa good target state for handling X number of voice calls with Y numberof agents and achieving a customer satisfaction rate of, for example,98%. Other details that could be stored as part of the metadata includebut are not limited to agents' occupancy, average speed of answer,average handling time, % answer within target, abandonment rate, averagequeue length, and the like, that is targeted by the particulardeployment.

Otherwise, if a current deployment is deemed to be unhealthy due to lowperformance in one or more aspects of the contact center, the metadatamay indicate this as well.

According to one embodiment, the data that is archived in the deploymentarchive for a particular deployment/state includes deployment settings(e.g. which servers are deployed, how many of each server, how do theyinterconnect, etc.), configuration parameters for the individualservers, option settings, agent information, routing strategies, andother information needed for running a contact center. The deploymentdata may be captured, for example, by creating an image of the virtualmachine 500 that is configured and running the current deployment. Theimage may be captured using tools such as, for example, tools providedby VMware, Inc. The captured image may be stored, for example, in themass storage device 534. Once captured, the image may then be loaded,for example, on another computing device to recreate the same deploymentenvironment as in the captured image.

The procedure as well as the expense of migrating to the particulardeployment/state from an original deployment may also be archived andstored in the deployment archive. The expenses may be monetary expensesincurred in migrating to the particular state, service quality impactduring the actual migration, and/or the like.

The procedure that is archived to migrate to a particular target statemay include changes in configuration, the migration steps that areinvolved, the sequence of such migration steps, and the objects that areaffected and in what order. According to one embodiment, the proceduremay initially be performed manually by a contact center administrator.While the administrator performs the steps to migrate from a currentstate to a target state, his or her actions may be recorded using, forexample, tools provided by VMware, Inc. Thus, instead of capturing animage of the final deployment, the runtime codes and the recordedconfiguration session may be captured to recreate the deployment by themigration server 532. In this regard, an administrator accessing themigration server 532 may, for example, click a button, and the recordedprocedure may be re-executed in an automated fashion to migrate acurrent deployment to the target deployment.

An example of a migration procedure when a new component replaces an oldcomponent may include, as a first step, installing a new license filefor the new component. Next, the procedure may require that a newdatabase be installed because the new component uses a new database. Ifthe table structure for the new component is different, a script may berun to create the table structure for the new component. Data may thenhave to be migrated from the old component to the new component,requiring that another script be run in order to convert the data fromthe old table structure to the new table structure. According to oneembodiment, as each step is performed, the step may be recorded andstored in the deployment archive for later use.

According to one embodiment, as the health monitor 530 collects healthystates and transitions and associated migration procedures, an expertsystem may be created which learns and recommends optimal deploymentsfor contact centers based on monitored conditions. The gathered data maybe for a single contact center tenant or gathered across various contactcenters in a multi-tenant environment.

FIG. 33 is a flow diagram of a process for providing dynamic elasticityof contact center resources according to one embodiment of theinvention. In act 600, the monitoring server 526 monitors and collectscontact center operation data defined by one or more monitoringparameters. According to one embodiment, currently deployed resources(e.g. SIP Server, etc.) may run with overload protection activated. Inthis instance, the SIP server may reject traffic when running intooverload. The fact that traffic is rejected may be detected by themonitoring server for triggering adjustment actions, such as addingresources.

The monitoring parameters may be configured, for example, for eachresource layer. The resource layer may include, for example, a hardwarelayer, platform/software layer, and operational/business layer.

The monitored data is provided to the elasticity server 528, and theelasticity server analyzes the collected data and compares the dataagainst preset thresholds for identifying a condition that calls foradjustment of contact center resources/services. The condition may bevariance from normally anticipated conditions for the contact center.For example, the variance may be interaction volume that is more or lessthan threshold interaction volume, load of servers that is more or lessthan a threshold load, and the like. Each resource in a particularresource layer may have a different threshold that is compared againstcollected data for determining variance. Data other than data collectedfrom real-time monitoring of contact center operations may also beprovided to the elasticity server 528 in order to determine current orprojected variance. For example, historical data may be provided to theelasticity server 528 to determine projected variance.

In act 602, the elasticity server 528 determines whether the detectedvariance is sufficient to invoke an elasticity function. One or morethresholds from the same resource layer or from different resourcelayers may be considered in determining that one or more elasticityfunctions should be triggered. For example, both a CPU load higher thana first threshold and a load of the routing server 506 higher than asecond threshold may be needed to trigger the elasticity function.Either situation by itself, however, may be insufficient to cause thetriggering of the function. In addition, the elasticity server may beconfigured to tolerate operation of the contact center at conditionsthat meet or exceed thresholds, if such conditions are not prolonged. Inthis regard, the elasticity server 528 may be configured to monitor theamount of time in which the variance conditions are present, and triggerthe elasticity function if the variance conditions exceed a maximumacceptable duration preset by a contact center administrator.

In act 604, one or more appropriate elasticity functions are invokedusing, as input, the data collected by the monitoring server 526. Otherdata such as historical data may also serve as input to the elasticityfunction.

In act 606, the elasticity function considers the inputs along with anyconditions, constraints, and/or objectives, and selects an optimaladjustment strategy in light of the conditions, constraints, and/orobjectives. According to one embodiment, optimized parameters consistentwith the selected strategy are then output.

In act 608, the elasticity server 528 may be configured to assesspenalties and risks in performing the adjustment. For example, there maybe penalties in migrating from a current state to a target state, suchas, negative impact on certain service operations. For example, thetarget state may require re-execution of the routing strategy whichrequires customers to re-answer certain questions, or there may be aslight delay in activating the target state which could lead toabandonment of calls. If the target state has been deployed in the past,the health of the target state may be examined in assessing therisk/penalty of performing the adjustment. The same or differentpenalties and risks may also be considered in selecting the optimaladjustment strategy in act 606.

In certain embodiments, the elasticity server 528 may be configured torun a what/if test scenario to test all or certain aspects of theselected adjustment strategy in order to assess the risk of implementingthe adjustment. For example, if the adjustment strategy calls foradjusting the existing routing strategy in order to push more calls toan IVR environment in the event of heavy call traffic into the contactcenter, the elasticity server 528 may be configured to test the adjustedrouting strategy with simulation data to ensure that the strategy worksproperly prior to actually implementing the change in the routingstrategy.

In act 610, the elasticity server determines whether the adjustment tothe target state involves low risk or high risk. For example, low riskmay be determined if the assessed penalties are below a particularthreshold. In other examples, low risk may be determined if the sameadjustment has been performed successfully in the past.

According to one embodiment, in the event that the risk of migrating tothe new state is less than a preset threshold, the migration server 528automatically carries out the adjustment to achieve the target state. Insome instances, this may be simply retrieving an image of the virtualmachine 500 implementing the target state and re-loading the image on atarget device. In other instances, it may be automatically executing arecording of migration steps previously taken manually to implement theadjustment to the new state.

According to one embodiment, in the event that the risk of migrating tothe new state is more than a preset threshold, the elasticity server 528prompts the contact center administrator to perform the adjustmentmanually in step 612. For example, if the target state is new anduntested, the adjustment may be done manually. For example, a contactcenter administrator may have to manually activate another instance of aSIP server or interaction server. The manual adjustment steps may becaptured by the migration server along with any expenses in going fromthe original state to the target state, and stored in the mass storagedevice for later use. In other embodiments, some of the adjustment maybe automatic while some is manual.

In one exemplary use case, the selected adjustment strategy calls formoving a virtual machine 500 from one computing device to a target,more/less powerful, computing device. In implementing this adjustment,the migration server 532 may be configured with a migration tool suchas, for example, a tool offered by VMWare. The tool may be invokedautomatically by the migration server 532 in response to adjustmentoutputs provided by the health monitor, or manually based on usercommand. As a person of skill in the art should understand, in migratingthe virtual machine 500, the tool may first isolate the memory areasthat are not changing from those memory areas that are changing, andmigrate the memory areas that are not changing first before migratingthe memory areas that are changing. In addition, the tool is configuredto preserve the IP addressing of the various servers running on thevirtual machine, even after they move to the target computing device.

In another exemplary use case, the virtual machine 500 is configuredwith a core/basic set of resources for providing basic contact centerservices and handling an interaction volume between X1 and X2. Themonitoring server 526 continually monitors the interactions and providesthe information to the elasticity server 528. The elasticity server maybe configured with an elasticity function that causes a farm of servers(e.g. all servers running on the voice VM 500 a for handling increasedvoice calls, or all servers running on the multimedia VM 500 b forhandling increased multimedia calls other than voice calls) to be addedfor the contact center as the interaction volume approaches X2. Prior tothe interaction volume reaching X2, the elasticity server is configuredto output parameters for starting a farm of Y servers configured tohandle an increased interaction volume between X2 and X3. When theinteraction volume falls below X2 by a preset amount, the elasticityserver is configured to remove the additional servers that are no longerneeded due to the decrease in the interaction volume.

According to one embodiment, increased load of individualprocesses/servers running on a particular virtual machine may triggerthe elasticity server 528 to add another instance of, for example, justthe overloaded process without having to add all the other serversrunning on the virtual, machine on which the overloaded process runs. Ofcourse, the process could indeed be overloaded, or could run inself-protection mode where the process rejects load above a certainthreshold. In the latter case, the process may stay as is, and addinganother process (on same or different computer) in load balancing modemay solve the problem.

For example, the monitoring server 526 may detect an increased load ofan existing SIP server 502. The monitoring server 526 may be configuredto monitor the load of the existing SIP server by, for example, apercentage of INVITE messages re-transmitted by the existing SIP server.That is, if the SIP server is overloaded, the percentage of INVITEmessages that is re-transmitted increases due to the initial INVITEmessages failing to go through. The monitoring server may also consideruse of hardware resources (e.g. CPU load) in determining the load of theSIP server.

When the percentage of INVITE messages that are re-transmitted exceed apreset threshold number for a threshold duration of time, the elasticityserver 528 may be configured to add a second instance of the SIP serverto the voice VM 500 a. The migration server 532 receives parameters fromthe elasticity server indicating, for example, that another instance ofthe SIP server is to be added. The migration server may then execute ascript for automatically activating the new instance of the SIP server.

According to one embodiment, the activated SIP server may be a stand-bySIP server that has been pre-configured via the configuration server510. An instance of the stand-by SIP server may be created by assigninga name and describing attributes of the server, such as, for example,connections to other servers, the software version of the server, andthe like. Once created, the settings of the stand-by SIP server areprogrammed, such as, for example, telephony objects (directory numbers(DNs)), accounts of agents, and the like. With respect to the directorynumbers, the DNs may be dynamically allocated at runtime according to aconsistent hashing algorithm instead of being statistically allocated,as is described in further detail in U.S. application Ser. No.13/844,159 entitled “System and Method for Additional and Removal ofServers in Server Cluster,” filed Mar. 15, 2013 (attorney docketG711:72562), the content of which is incorporated herein by reference.Other configuration options on the SIP server may relate to defaultrouting options in case the routing server 506 does not respond to arouting request within a preset time.

According to one embodiment, when the migration server 532 activates thestand-by instance of the SIP server, the stand-by instance firstconnects to the configuration server 510 for reading its configurationdata. The instance finds its name and reads the configuration settingsto determine for example, to which SIP proxy to connect to as well asother runtime settings. Once the configuration settings are read, theSIP server instance is activated and ready to handle telephony calls.According to one embodiment, the new instance of the SIP server isassigned a new IP address. The new IP address is communicated to theedge device 22 for being included in load balancing the telephony callsto the various instances of the SIP server. If the new instance of theSIP server is no longer needed, the IP address of the SIP server isdeleted from the edge device and deactivated via the configurationserver 510.

In a further exemplary use case, the adjustment strategy may call foradding an instance of the routing server 506 in response to detecting anincreased load of the routing server. For example, the routing servermay be handling X number of concurrent calls which are time consuming.For example, the routing strategy executed by the routing server mayrequire lookup of a database which creates load on the component.

The monitoring server 526 may be configured to monitor the load to theexisting routing server by, for example, monitoring the time it takesfor the routing server to handle tasks other than routing voice calls.Such other tasks are referred to as secondary tasks. An exemplarysecondary task may be changing the routing server's configuration datato reflect a change in an agent's skill profile. Such secondary tasksmay be handled by the routing server when it is not busy handling itsprimary task of routing voice calls. That is, if the routing server isoverloaded, the time it takes for the routing server to handle secondarytasks may increase.

According to one embodiment, when the time it takes for the routingserver to handle secondary tasks exceeds a preset threshold time, theelasticity server 528 may be configured to add a second instance of therouting server 506 to the voice VM 500 a. The migration server 532receives parameters from the elasticity server indicating, for example,that another instance of the routing server is to be added. Themigration server may then run a script for automatically activating thenew instance of the routing server. The deployment of the contact centerthus migrates to a state with the new instance of the routing server.

According to one embodiment, the activated routing server may be astand-by routing server that has been pre-configured via theconfiguration server 510. For example, the stand-by instance may bepre-configured with necessary connections to the SIP server 502,statistics server 504, and the like. When the migration server 532activates the stand-by instance of the routing server, the stand-byinstance first connects to the configuration server 510 for reading itsconfiguration data. The instance finds its name and reads theconfiguration settings to connect to the appropriate SIP server,register statistics to the appropriate statistics server 504, load theappropriate routing strategy for the route point controlled by therouting server, and the like.

According to one embodiment, an active call could be moved from acurrent, overloaded routing server to the new instance of the routingserver activated by the migration server 532. For example, the currentrouting server may be configured to periodically monitor a globalvariable that may be set, for example, by the elasticity server 528 ormigration server 532, to signal the current routing server that acurrent call assigned to the routing server is to be transferred to thenew routing server. The global variable may identify a route point (e.g.a directory number) controlled by the new routing server to which thecall is to be transferred. While executing a routing strategy for acurrent call, the current routing server may be configured toperiodically check to see if the global variable has been set. If so,the current routing server may be configured to signal the SIP server502 to transfer the call to the new route point controlled by the newrouting server.

The new routing server may be configured to run the same routingstrategy as the current routing server. According to one embodiment,when the call is transferred to the new routing server, the routingstrategy on the new routing server executes from the beginning. Ifcertain steps of the routing strategy, such as, for example, askingquestions to the customer via the IVR had already been executed by thefirst routing server, such steps are re-executed by the new routingserver if the routing strategy is invoked again from the beginning,leading to inefficiencies and, in some circumstances, customerfrustration,

According to one embodiment, the routing strategy in the new routingserver resumes at the point in the strategy that was left off from theprior routing server. In this regard, the transferring routing servermay be configured to attach to a call object, which stores details of acurrent call and is maintained by the SIP server 502, identification ofa step in the routing strategy that was most recently executed once itdetermines that the global variable has been set and the call is to betransferred to the new routing server. When the call is transferred tothe route point controlled by the new routing server, the call object isalso transferred with the call. The new routing server may be configuredto read the data stored in the call object and identify the mostrecently executed step in the routing strategy. According to oneembodiment, the new routing server refrains from executing that stepagain, and proceeds to the next step in the routing strategy.

According to another embodiment, instead of transferring the call to theroute point controlled by the new routing server, the call may betransferred to a second SIP server to which the new routing server isconnected.

According to one embodiment, the addition of a new instance of a routingserver 506 triggers notification to the load balancer 508 to add the newinstance to the configuration settings of the load balancer. Forexample, the new route point controlled by the new routing server may beadded to the load balancer's configuration settings. Similarly, deletionof an existing instance of a routing server triggers notification to theload balancer for deleting the instance of the server from theconfiguration settings of the load balancer. When the SIP server 502receives a new call that requires routing, the load balancer isconfigured to execute logic to assign the call to the active instancesof the routing server 506 (e.g. in a round robin fashion). In otherembodiments, the logic of the load balancer 508 may be incorporated intothe SIP server 502.

According to one embodiment, resources may be dynamically added anddeleted in response to detected, forecast, or scheduled events. Forexample, the contact center may run an outbound campaign on presetdates. If such campaigns are infrequent for the contact center, it maybe costly to maintain and pay for resources (e.g. outbound servers) thatare dedicated to such campaigns. The dynamic elasticity capabilitiesprovided by embodiments of the present invention allow such outboundservices to be activated when needed, and removed when no longer needed.For example, the elasticity server 528 may be configured to receive asinput the various parameters of the outbound campaign that is to be run,select an optimal adjustment strategy in response, and output parametersfor the adjustment strategy which may indicate, for example, theresources that need to be added (e.g. outbound servers) in order toprovide the added service. The migration server 532 may then be invokedto migrate the current contact center without outbound campaigncapability, to a contact center that includes outbound campaigncapability.

According to one embodiment, the adjustment of contact center resourcesmay be to switch from one services mix to a different services mix. Forexample, in response to detecting increased call volume relating to aparticular type of product, the elasticity server may be configured tooutput an adjustment strategy that is configured to redirect futureincoming calls relating to that product to other multimedia such as, forexample, chat or social media interactions. This may entail, forexample, changing a television ad for the product to provide a Twitteror Facebook page that users can use to contact the contact centerinstead of a telephone number. For a webpage, a “click to call” buttonon the page may be dynamically switched to a “click to chat” button inresponse to the increased call volume for the advertised product.

If a smart phone is used to initiate a voice call by a customer, thecontact center may send a return pop-up message to suggest an alternatecommunication medium, such as, for example, chat. A link may be providedin the pop-up message for initiating a chat session with a contactcenter agent instead of waiting in a queue for a voice call with theagent.

In other embodiments, adjustments may be made to the routing strategy sothat an IVR application is automatically launched to allow self-servicefor calls relating to the particular type of product instead of routingsuch calls to a contact center agent.

FIG. 34 is a flow diagram of a process for monitoring health of adeployment state after migrating from a first deployment state to asecond deployment state according to one embodiment of the invention. Inact 700, the contact center migrates from the first state to the secondstate according to the process described with respect to FIG. 33.

In act 702, the migration server 532 records migration steps if suchsteps are manually invoked.

In act 704, the migration server 532 stores the recorded steps withmetadata associated with the second state in the deployment archivemaintained in the mass storage device 534. The metadata may describe,for example, the optimal conditions for the second state, such as, forexample, the optimal traffic, optimal number of agents, and the like,that the second state is configured to handle. One or more images of thevirtual machines may also be stored in a deployment archive to capturethe deployment settings and other configuration parameters of the secondstate. For example, the images may capture the servers that are runningon each virtual machine, along with the configuration parameters of eachof the servers. According to one embodiment, the mass storage device 534may maintain a history of migrations from one deployment state toanother.

In act 706, the health monitor 530 monitors the health of the seconddeployment state, and, in step 708, stores the health data in the massstorage device 534. For example, the health monitor 530 may monitor thesame conditions monitored by the monitoring server 526, such as, forexample, abandonment rate, average handle time, customer satisfaction,service levels, agents' occupancy, and the like. The health monitor 530may be configured to compute a health value for the contact centerindicative of how healthy or unhealthy the second deployment state isbased on the monitored conditions. For example, the health value may becomputed based on how much the monitored conditions deviate from anoptimal healthy condition as defined via certain thresholds. Thecomputation may include or exclude appropriate agent staffing fromconsideration, and/or add unused agent capacity as an additionalparameter. The reference/optimal state may be determined by usingHalfin-Whitt (or QED—quality and efficiency driven) concepts as will beunderstood by a person of skill in the art. Once computed, the healthvalue may be stored as part of the metadata for the second deploymentstate.

In act 710, the health monitor determines whether the second deploymentstate is deemed to be unhealthy based on the computed health value. Ifthe second deployment state is determined to be in unhealthy, forexample, for more than a preset duration of time, the health monitor maybe configured to take an action in step 712. The action may be, forexample, to try to troubleshoot for determining the cause for theunhealthy state. A troubleshooting application may be launched foridentifying, for example, bottlenecks such as overload of currentlyavailable pool of agents (e.g. might be less than expected/planned). Acorrective measure may be identified by the application, such asautomatically redirecting higher percentage of traffic to self-service(in IVR), e.g. routing only gold customers to agents instead of gold andsilver. Of course, this exemplary corrective measure assumes that thereare sufficient IVR ports for handling the calls. Another correctiveaction may be playing automatic announcements to calls indicating thatthere is overload and requesting that the callers call later. Health ofthe deployment after implementing the corrective actions may be measuredagain for determining whether those measures are successful.

In another example, the action may be to revert to the first state. Inreverting to the first state, the migration server may be configured toexecute migration steps recorded previously or deduced from themigration steps taken in migrating from the first state to the secondstate.

It is the Applicant's intention to cover by claims all such uses of theinvention and those changes and modifications which could be made to theembodiments of the invention herein chosen for the purpose of disclosurewithout departing from the spirit and scope of the invention. Forexample, the above examples relating to dynamic adjustment of resourcesfor handling voice interactions may be extended to apply to other typesof interactions. Thus, the present embodiments of the invention shouldbe considered in all respects as illustrative and not restrictive, thescope of the invention to be indicated by claims and their equivalentsrather than the foregoing description.

1. A method for providing dynamic elasticity of contact centerresources, the method comprising: monitoring and collecting, by aprocessor, contact center operation data; detecting, by the processor,in response to the monitoring, a condition relating to the operation ofthe contact center; and dynamically adjusting, by the processor, atleast one hardware or software resource for the contact center based onthe detected condition.
 2. The method of claim 1, wherein the monitoringincludes monitoring volume of interactions handled by the contactcenter, wherein the condition is an increased number of interactionswhen compared to a threshold volume.
 3. The method of claim 1, whereinthe monitoring includes monitoring hardware resources of the contactcenter, wherein the condition is an increased load on the hardwareresources when compared to a threshold load.
 4. The method of claim 1,wherein the dynamic adjusting adds or removes an instance of thesoftware resource.
 5. The method of claim 1, wherein the dynamicadjusting moves the software resource from a first computing device to asecond computing device.
 6. The method of claim 1, wherein the dynamicadjusting includes moving from providing a first mix of contact centerservices, to a second mix of contact center services.
 7. The method ofclaim 6, wherein the second mix of contact center services include acontact center service not in the first mix.
 8. The method of claim 1wherein the method further comprises: selecting by the processor anadjustment strategy from a plurality of possible adjustment strategiesin response to detecting the condition, wherein the dynamic adjusting isbased on the selected adjustment strategy.
 9. The method of claim 8,wherein the adjustment strategy is for generating a particulardeployment state having the adjusted at least one hardware or softwareresource.
 10. The method of claim 9, wherein the deployment state isselected from an archive of different deployment states.
 11. The methodof claim 9, wherein the selected deployment state is identified as ahealthy state.
 12. The method of claim 1, wherein the dynamicallyadjusting includes: retrieving by the processor from an archive,recorded steps for performing the dynamic adjusting; and executing bythe processor the retrieved recorded steps.
 13. The method of claim 1,wherein the dynamic adjusting includes: taking by the processor the atleast one hardware or software resource allocated to a second contactcenter and reallocating the resource to the contact center.
 14. Themethod of claim 1, wherein the contact center operation data includeshistorical data.
 15. The method of claim 1, wherein the detecting thecondition includes making a prediction relating to the operation of thecontact center.
 16. A system for providing dynamic elasticity of contactcenter resources, the system comprising: a processor; and a memorystoring program instructions thereon that, when executed by theprocessor cause the processor to: monitor and collect contact centeroperation data; detect, in response to the monitoring, a conditionrelating to the operation of the contact center; and dynamically adjustat least one hardware or software resource for the contact center basedon the detected condition.